Angular 表单控件在下次单击之前不会更新

Angular form control not updating until next click

Sample app at https://stackblitz.com/edit/angular-cnvphg

我正在尝试根据其他检查更新 FormArray 的复选框。本质上,如果选中第一项,则必须取消选中所有其他项。如果他们选中任何其他项目,则必须取消选中第一项。

如果您查看上面的示例,当我检查第一项时没有任何反应。只有在我取消选中另一个项目后,其余的复选框才会消失。为什么会这样?我将控件更新包装在一个 setTimeout 块中,我认为这是这里公认的做法。

问题与表单控件无关,您使用它们很好。它由 pairwise() 运算符引起。在它有两个值之前它不会发出值。这就是为什么第一次点击没有任何反应的原因。所以你应该为 pairwise() 运算符提供初始值。试试这个;

this.formArray.valueChanges.pipe(
   startWith([false, true, true, true]),
   pairwise()
)