在自定义验证器指令中注入 ngControl,导致循环依赖
Injecting ngControl in custom validator directive, causes cyclic dependency
我正在尝试创建自定义 angular 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) { };
}
但是我收到以下错误:
Cannot instantiate cyclic dependency! NgControl
有谁知道我该如何解决它,以便我可以在初始化后访问 ngControl?
Providers、Pipes、Directives 声明已从 @Component 或 @Directive装饰器在RC6或RC7之后。所以你只需要删除
providers: [{provide: NG_VALIDATORS, useExisting: CustomValidatorDirective, multi: true}]
来自指令
并将其添加到 @NgModule({}) 装饰器
@NgModule({
...
providers: [{provide: NG_VALIDATORS, useExisting: CustomValidatorDirective, multi: true}]
})
您可以通过注入器注入 NgControl 以避免循环依赖。
constructor(private _injector: Injector) { }
ngOnInit() {
console.log(this._injector.get(NgControl))
}
我正在尝试创建自定义 angular 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) { };
}
但是我收到以下错误:
Cannot instantiate cyclic dependency! NgControl
有谁知道我该如何解决它,以便我可以在初始化后访问 ngControl?
Providers、Pipes、Directives 声明已从 @Component 或 @Directive装饰器在RC6或RC7之后。所以你只需要删除
providers: [{provide: NG_VALIDATORS, useExisting: CustomValidatorDirective, multi: true}]
来自指令
并将其添加到 @NgModule({}) 装饰器
@NgModule({
...
providers: [{provide: NG_VALIDATORS, useExisting: CustomValidatorDirective, multi: true}]
})
您可以通过注入器注入 NgControl 以避免循环依赖。
constructor(private _injector: Injector) { }
ngOnInit() {
console.log(this._injector.get(NgControl))
}