【发布时间】:2016-06-12 23:01:14
【问题描述】:
在 Angular 2 中,子组件可以通过构造函数参数注入其父组件。示例:
@Component({...})
export class ParentComponent {
...
}
@Component({...})
export class ChildComponent {
constructor(private parent: ParentComponent) { }
...
}
只要父母和孩子是不同的类型,这很好用。
但是,另一个典型用例是树结构,其中每个树节点都显示为一个单独的组件。如果每个树节点组件都应该可以访问其父节点,我们应该怎么做?我试过这个:
@Component({...})
export class TreeNodeComponent {
constructor(private parent: TreeNodeComponent) { }
...
}
但这会失败并出现以下运行时异常:
EXCEPTION: Cannot instantiate cyclic dependency!
我猜原因是 Angular 2 注入了组件本身而不是其父组件。
如何告诉 Angular 注入组件的父组件,即使它们是相同类型的?
【问题讨论】:
-
为什么要注入父节点,为什么不直接使用数据绑定?
标签: dependency-injection angular