aktualizacja
forwardRef()
nie jest wymagane, ponieważ już directives
została przeniesiona do NgModule.declarations
i dlatego rekurencyjne elementy nie muszą być zarejestrowane na siebie jako directives
więcej.
Angular 4.x.x Plunker example
oryginalny
To obsługiwane. Trzeba tylko dodać komponent do directives: []
w jego dekoratorze @Component()
. Ponieważ dekorator występuje przed klasą, a klasy nie mogą się odwoływać, zanim zostaną zadeklarowane, wymagane jest 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
Patrz także Inject parent component of the same type as child component
dziękuję Gunter. spróbuję od razu. brak jakiegokolwiek importu {selgComponent} ?? po prostu dodaj dyrektywę. – Serhiy
Świetnie !. Dziękuję Ci!! – Serhiy
@ Günter, Czy masz pojęcie o tym, jak to zrobić po RC5? – harunurhan