使用ChangeDetectionStrategy.OnPush
避免一次又一次地检查页面的更改,但是在需要时我明确地将其命名为ChangeDetection
。
我有ReactiveForm
的验证信息:
this.form = this.fb.group({
station: ['', Validators.required],
startDate: ['', Validators.required],
endDate: ['', Validators.required],
dataType: ['', Validators.required],
});
按钮的HTML标记:
<button [disabled]="!form.valid">Submit</button>
当最后一次输入更改时,我称以下内容:
dateChange() {
console.log(this.form.valid)
this.cd.detectChanges();
}
控制台返回true
,但该按钮未启用(不可单击)。
答案 0 :(得分:1)
使用markForCheck()
代替detectChanges()
答案 1 :(得分:1)
您正在使用OnPush,为什么不使用Observable和async管道来控制表单的状态,而不是手动触发更改检测?两者兼而有之对我来说适得其反?
<button [disabled]="!(dataSource$ | async)">Submit</button>
答案 2 :(得分:0)
ZipInputStream
disabled是HTML属性,只要它具有设置的值即可。...将其更改为null而不是false应该可以解决问题。