Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度:ControlValueAccessor更新到共享相同formControlName的所有组件_Javascript_Angular_Typescript_Angular Reactive Forms_Controlvalueaccessor - Fatal编程技术网

Javascript 角度:ControlValueAccessor更新到共享相同formControlName的所有组件

Javascript 角度:ControlValueAccessor更新到共享相同formControlName的所有组件,javascript,angular,typescript,angular-reactive-forms,controlvalueaccessor,Javascript,Angular,Typescript,Angular Reactive Forms,Controlvalueaccessor,我希望这张图片能解释我想做什么。 所以我想做一个自定义的无线电组件,它共享相同的formControlName。 单击收音机时,共享相同formControlName的其余组件应使用活动值更新 我该怎么做?我已经测试了在多个输入之间仅共享formControlName的行为,并且它不会仅基于此绑定属性进行更新。看起来需要解决方案、ngModel(仅适用于v5或更旧版本)或函数来完成所需的行为。此处提供了一个已关闭的问题和一些详细的对话框: 最值得注意的是: 共享表单控件目前仅支持自然分组的控

我希望这张图片能解释我想做什么。

所以我想做一个自定义的无线电组件,它共享相同的formControlName。 单击收音机时,共享相同formControlName的其余组件应使用活动值更新


我该怎么做?

我已经测试了在多个输入之间仅共享formControlName的行为,并且它不会仅基于此绑定属性进行更新。看起来需要解决方案、ngModel(仅适用于v5或更旧版本)或函数来完成所需的行为。此处提供了一个已关闭的问题和一些详细的对话框:

最值得注意的是:

共享表单控件目前仅支持自然分组的控件,如单选按钮(具有共享注册表)。对于文本输入共享控件,如果希望同步,ngModel是唯一的选项。考虑到解决方法,我们不太可能将此功能添加到被动表单中,所以请关闭。如果您觉得有一个用例无法通过其他方式解决,请随时打开一个问题,提供关于您的用例的更多信息

但也有关于变通办法的评论

变通办法 最吸引人的是:

当FormControl更新时强制[FormControl]和[FormControlName]更新的自定义指令

作用 您可以在组件中创建一个函数,用于设置formControl的值:

setControl(value){
    this.form.controlName = value
}
并执行一个调用函数的单击事件:

<input type="radio" formControlName="controlName" (click)="setControl(x)">

编辑答案,并给出更全面的回答