我想根据其他两个控件更改FormArrray的值。
我认为我已经进行了所有必要的检查,但打字稿指出了st和sp
对象可能为空
此代码有什么问题?
let starterChanges$ = of(null);
const starter = this.frm.get('starter');
if (starter) {
starterChanges$ = starter.valueChanges;
}
let spreadChanges$ = of(null);
const spread = this.frm.get('spread');
if (spread) {
spreadChanges$ = spread.valueChanges;
}
this.subscription.add(
combineLatest([starterChanges$, spreadChanges$]).subscribe(([st, sp]) => {
let current = 0;
if (st !== null && sp !== null) {
for (const control of this.orders.controls) {
if (!current) {
current = current + st + sp;
} else {
current = current + sp;
}
control.patchValue({ spread: current });
control.disable();
}
}
})
);
答案 0 :(得分:1)
这种情况很可能是问题所在
if (!current) {
current = current + st + sp;
}
如果!current
,如何在+
操作中使用它?这将导致诸如null + st + sp
之类的情况,这应该是什么结果?
答案 1 :(得分:0)
尝试下一个检查:
if (st && sp) { ... }
您正在检查它是否为null,但可以不确定。
答案 2 :(得分:0)
(代表OP发布,以将问题的答案移出问题帖)。
我用以下方法解决了这个问题:
([st = 0, sp = 0])