在Angular中实现自己的单选按钮元素时遇到问题。
以下代码是我要使用的标记父组件:
<form>
<my-radio [(ngModel)]="radioBoundProperty" value="1" name="myCustomRadioButton">Btn 1</my-radio><br>
<my-radio [(ngModel)]="radioBoundProperty" value="2" name="myCustomRadioButton">Btn 1</my-radio><br>
</form>
<p>
The value of radioBoundProperty is:
</p>
<pre>{{radioBoundProperty|json}}</pre>
到目前为止,我已经构建了一个实现ControlValueAccessor
的自定义无线电组件。
将数据(例如值,标签)引入my-radio
组件是可行的,但无法通过ngModel双向数据绑定将选择返回到我的父组件中。
即使最初更改radioBoundProperty
的值,它的值也会覆盖两个我的电台的value
属性
现在更新此堆栈闪电是一个可行的示例
stackblitz和现在可以使用的示例code
答案 0 :(得分:1)
使用registerOnChange
函数将值发送给父级。
export class RadioModel implements ControlValueAccessor {
onChange = (val: string) => { };
onTouched = () => { };
onApplied = () => { };
writeValue(val: string): void {
// when the ngModel change it comes under writeValue function
}
registerOnChange(fn: (val: string) => void): void {
this.onChange = fn;
}
registerOnTouched(fn: () => void): void {
this.onTouched = fn;
}
valueChanged(){
this.onChange('your value');
}
}