我有以下组件:
@Component({
selector: 'pc-radio-button',
templateUrl: './radio-button.component.html',
providers: [
{provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => FieldRadioButtonComponent), multi: true}
]
})
export class RadioButtonComponent implements ControlValueAccessor {
...
}
我可以通过以下输入来分配和更改值:
<pc-radio-button [formControl]="formControl"></pc-radio-button>
<pc-radio-button [formControlName]="inputControlName"></pc-radio-button>
但是,我需要该组件直接访问分配的formControl,因为我需要根据其状态添加样式。
通过创建 @Input()formControl 无法解决问题。由于它不涉及通过formControlName分配表单控件的情况。
最佳答案
看来jector.get(NgControl)发出了弃用警告,所以我想提出另一种解决方案:
constructor(public ngControl: NgControl) {
ngControl.valueAccessor = this;
}
技巧还在于从providers数组中删除NG_VALUE_ACCESSOR,否则会得到循环依赖。
有关此的更多信息,请参见this talk by Kara Erickson of the Angular team。
关于angular - 如何从ControlValueAccessor获取FormControl实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45755958/