问题:在Angular 6中,无法在验证指令中注入NgControl。
解决方法:在Angular 6中,你可以使用forwardRef来解决这个问题。forwardRef允许你在注入器中使用尚未定义的引用。
以下是一个解决方法的代码示例:
import { Directive, forwardRef } from '@angular/core';
import { NG_VALIDATORS, Validator, FormControl } from '@angular/forms';
@Directive({
selector: '[customValidator][ngModel],[customValidator][formControl]',
providers: [
{
provide: NG_VALIDATORS,
useExisting: forwardRef(() => CustomValidatorDirective),
multi: true
}
]
})
export class CustomValidatorDirective implements Validator {
constructor() { }
validate(c: FormControl): { [key: string]: any } {
// 在这里可以使用NgControl
return null; // 返回null表示验证通过
}
}
通过这种方式,你就可以在验证指令中注入NgControl并使用它来进行自定义验证逻辑。
希望这个解决方法对你有帮助!