在角度1.x中,我们可以通过在指令内要求它来引用父控制器。但是,由于整个命名切换为角度2,我似乎无法找到相应的功能?
到目前为止我尝试过的事情:
答案 0 :(得分:7)
我不太了解Angular1,因此我无法确定require
究竟做了什么或者用于什么目的。
你问题中提到的子弹:
父模板
<child [childInput]="parentValue" (childOutput)="doSomethingInParent()">
此DI行为可以防止您在问题中提到的冲突。
<child1 [child1Input]="child2.child2Prop"
(child1Output)="child2doSomethingInChild2()">
<child2 #child2></child2>
constructor(@Host() private parent:ParentComponent) {}
在递归组件(如树)中,这可能特别方便,因为它知道父级是什么。在这种情况下,可能需要额外的装饰器
constructor(@Optional() @SkipSelf() @Host() private parent:ParentComponent) {}
哪里
@Optional()
用于避免异常的根组件,因为没有相同类型的父级要注入@SkipSelf()
避免组件本身被注入,因为它与它实际想要注入的父类型相同。 DI总是从组件本身开始查找提供商。另见Inject parent component of the same type as child component