aggiornamento
forwardRef()
non è richiesto più perché directives
è stato spostato a NgModule.declarations
e quindi componenti ricorsive non hanno bisogno di essere registrati su se stessi come directives
più.
Angular 4.x.x Plunker example
originale
che ha sostenuto. Hai solo bisogno di aggiungere il componente a directives: []
nel suo decoratore @Component()
. Poiché il decoratore viene prima della classe e le classi non possono essere referenziate prima di essere dichiarate è necessario forwardRef()
.
import {Component, forwardRef, Input} from '@angular/core'
@Component({
selector: 'tree-node',
template: `
<div>{{node.name}}</div>
<ul>
<li *ngFor="let node of node.children">
<tree-node [node]="node"></tree-node>
</li>
</ul>
`
})
export class TreeNode {
@Input() node;
}
@Component({
selector: 'my-app',
template: `
<div>
<h2>Hello {{name}}</h2>
<tree-node [node]="node"></tree-node>
</div>
`,
directives: [TreeNode]
})
export class App {
constructor() {
this.name = 'Angular2 (Release Candidate!)'
}
node = {name: 'root', children: [
{name: 'a', children: []},
{name: 'b', children: []},
{name: 'c', children: [
{name: 'd', children: []},
{name: 'e', children: []},
{name: 'f', children: []},
]},
]};
}
Angular 2.0.0-beta.x Plunker example
Vedi anche Inject parent component of the same type as child component
fonte
2016-06-10 11:23:39
grazie Gunter. proverò subito. nessuna importazione {selgComponent} ?? basta aggiungere la direttiva. – Serhiy
Ottimo !. grazie!! – Serhiy
@ Günter, hai qualche idea su come farlo dopo RC5? – harunurhan