我有这样的表单控件:
<input formControlName="myName" dynamicDisable>
然后是自定义指令:
@Directive({
selector: '[formControlName][dynamicDisable]
})
export class DynamicDisableDirective implements AfterContentInit {
@ContentChild(AbstractControlDirective) control: any;
ngAfterContentInit(): void {
console.log(this.control);
}
}
我想将指令所有者元素作为@ContentChild注入指令 . 所有者元素可以是任何类型的表单控件,如简单的FormControl,FormGroup甚至FormArray . FormControlName是AbstractControlDirective的后代 . 为什么控制台总是记录'undefined'呢?
注意:当我像这样切换NgControl的AbstractControlDirective时:
@ContentChild(NgControl) control: any;
一切都按预期工作,表单控件实例被注入并记录良好 . 但是,此方法只能用于简单的FormControl,而不能用于组和数组 .
1 回答
据我所知,没有提供
AbstractControlDirective
,因此如果没有进一步的帮助,查询或注入一个将无法工作 .我没有尝试,但它可能会工作注册别名提供商,如
使用
useMulti: true
,你可以(对所有人)获得一个列表,如果有多个匹配,然后过滤列表中你真正想要的 .