我尝试在angular2中使用循环相关组件。到目前为止开箱即用的是递归组件(在angular1中不能很好地工作):
@Component({
selector: 'ace-view',
template:
`<ace-view *ngFor="let SubView of SubViews" [view]="SubView"></ace-view>`,
directives:[
AceViewComponent
]
})
export class AceViewComponent {
...
}
上面显示的组件将自身用于子视图,它按预期工作。
但是,我遇到组件A需要组件B而组件B需要组件A的情况:
@Component({
selector: 'ace-A',
template:
`<ace-B *ngIf="whatever"></ace-B>`,
directives:[
AceB
]
})
export class AceA {}
@Component({
selector: 'ace-B',
template:
`<ace-A *ngIf="whatever"></ace-A>`,
directives:[
AceA
]
})
export class AceB {}
然后问题是,AceA尚未定义,当用于AceA的指令时。更糟糕的是,AceA和AceB可能存在于不同的文件中。
答案 0 :(得分:2)
您可以将@Component({
selector: 'ace-A',
template: `
<ace-B *ngIf="whatever"></ace-B>
`,
directives:[
forwardRef(() => AceB)
]
})
export class AceA {}
(...)
用于此用例。事实上,ES6课程不支持吊装。
.column