为什么 Angular 不同步具有相同 formControlName 的字段?

Why isn't Angular syncing fields with the same formControlName?

我有两个 mat-select 字段绑定到同一个表单中的同一个 formControlName,使用反应式表单。我本以为改变一个会反映在另一个,但事实似乎并非如此。这是为什么?跟变化检测有关系吗?

我认为您必须制作 2 个不同的 formControl,并且您需要订阅 valueChanges。 例如:

this.firstControl.valueChanges.subscribe(x => this.secondControl.setValue(x, {emitEvent: false}));

this.secondControl.valueChanges.subscribe(x => this.firstControl.setValue(x, {emitEvent: false}));

{ emitEvent: false } 需要,反之亦然。

对我来说,更简单的方法是不要两个具有相同 formControlName 的输入。将一个输入与 formControlName 一起使用,另一个使用 ngModel

<input formControlName="control">
<input [ngModel]="myForm.get('control').value"
       (ngModelChange)="myForm.get('control').setValue($event)"
       [ngModelOptions]="{standalone:true}">