【发布时间】:2018-07-10 12:19:27
【问题描述】:
我有一个带有子组件查询列表的组件。这些子组件中的每一个都公开了两个方法,一个返回表单是否有效作为observable<boolean>,另一个返回一个对象。
在父组件中,我想循环遍历子组件并检查每个子组件是否有效。我有这样的代码
let valid: boolean = true;
children.forEach(r => {
r.validate().subscribe(v => {
if(!v){
valid = v;
}
});
});
如果在 foreach 循环之后 valid 仍然为真,它会继续收集对象。但是,我认为这是不正确的,因为 foreach 循环可能在所有可观察对象发出值之前完成。我也不确定将多个订阅分配给同一个变量的效果。
除了简单地使 validate() 方法返回一个常规布尔值之外,还有更好的方法吗?像 forkjoin 这样的东西会更好吗,其中 foreach 循环只是将所有可观察对象分叉在一起并发出一个数组?
【问题讨论】:
标签: angular typescript rxjs