懶的翻譯了,翻也翻不通順,直接上原文(其實我就是個搬運工......)
As we can't get NgControl instance directly from DI system since we'll get a circular dependency error. The following diagram shows why it happens if we inject NgControl in our custom value accessor:
Now it should be clear that we have NgControl
-> FormControlName
-> ValueAccessor
-> CustomValueAccessor
-> NgControl
circular dependency
To work around it you can leverageInjector to achieve that:
component.ts
import { NgControl } from '@angular/forms';
export class PasswordComponent implements ControlValueAccessor {
...
ngControl: NgControl;
constructor(private inj: Injector) {
...
}
ngOnInit() {
this.ngControl = this.inj.get(NgControl)
}