懒的翻译了,翻也翻不通顺,直接上原文(其实我就是个搬运工......)
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)
}