直到下次单击,角形控件才会更新

时间:2019-06-17 20:55:06

标签: angular settimeout angular7 formarray

  

https://stackblitz.com/edit/angular-cnvphg的示例应用

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

如果您查看上面的示例,当我检查第一个项目时,什么也没有发生。仅当我取消选中另一个项目后,其余的复选框才会消失。为什么会这样呢?我将控件更新包装在setTimeout块中,这是我认为在此处可接受的做法。

1 个答案:

答案 0 :(得分:0)

问题与formcontrols无关,您可以很好地使用它们。它是由pairwise()运算符引起的。它只有两个值,它才发出值。这就是为什么第一次点击时什么也没有发生的原因。因此您应该向pairwise()运算符提供初始值。试试这个;

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