作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有以下组件:
@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 分配表单控件的情况。
最佳答案
看起来 injector.get(NgControl) 正在抛出弃用警告,所以我想加入另一个解决方案:
constructor(public ngControl: NgControl) {
ngControl.valueAccessor = this;
}
诀窍是同时从提供者数组中删除 NG_VALUE_ACCESSOR ,否则你会得到循环依赖。
有关此的更多信息,请参阅 this talk by Kara Erickson of the Angular team .
关于angular - 如何从 ControlValueAccessor 获取 FormControl 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45755958/
我是一名优秀的程序员,十分优秀!