我试图创建自定义的角度2验证器指令,它会像这样注入NgControl:
@Directive({
selector: '[ngModel][customValidator]',
providers: [{provide: NG_VALIDATORS, useExisting: CustomValidatorDirective, multi: true}]
})
export class CustomValidatorDirective implements Validator {
private validateFunction: ValidatorFn;
constructor(private control: NgControl) { };
}
但我收到以下错误:
无法实例化循环依赖! NgControl
有谁知道我如何处理它,所以我可以在初始化后访问ngControl?
答案 0 :(得分:7)
您可以通过Injector注入NgControl以避免循环依赖。
constructor(private _injector: Injector) { }
ngOnInit() {
console.log(this._injector.get(NgControl))
}
答案 1 :(得分:2)
提供商,管道,指令声明已从 @Compone nt 或 @Directi ve中删除 RC6 或 RC7 之后的装饰器。所以你只需要删除
providers: [{provide: NG_VALIDATORS, useExisting: CustomValidatorDirective, multi: true}]
来自指令 的
并将其添加到 @NgModule({})装饰器
@NgModule({
...
providers: [{provide: NG_VALIDATORS, useExisting: CustomValidatorDirective, multi: true}]
})