我有一个具有以下初始化的组件
ngOnInit() {
this.transactionForm.get('type').valueChanges.subscribe(transType => {
if (transType === 'xx') {
this.transactionForm.patchValue({
subTotal: 0
});
console.log('done', this.transactionForm.value);
}
});
}
我正在尝试编写以下测试:
it('should ...', () => {
fixture.detectChanges();
const expectedSubTotal = 0;
comp.transactionForm.patchValue({
type: 'xx',
subTotal: 42
});
fixture.detectChanges();
console.log('getting');
const actual = comp.transactionForm.get('subTotal').value; // Does not get 0 - gets 42 instead
expect(actual).toBe(expectedSubTotal);
});
console.log
都打印正确的值,但我似乎无法通过此测试。我错过了什么?
答案 0 :(得分:1)
您应该知道订阅者在form.patchValue
.patchValue({ type: 'xx', subTotal: 42 });
(1) (3)
||
\/
(2)
form.get('type').valueChanges.subscribe
因此要么运行
comp.transactionForm.get('type').updateValueAndValidity();
修补或重新排序属性后
.patchValue({ subTotal: 42, type: 'xx' });
但
JavaScript无法保证对象中的属性顺序