有时,Angular Validators无法正确触发并验证数据绑定的输入值,这可能是因为绑定的输入框已被标记为已访问(touched),但未输入任何字符。可以通过'unsubscribe”操作从订阅表单更改为订阅数据更改来解决该问题。
以下是示例代码,演示如何更改Angular Validators的订阅方式:
// 原代码 this.myForm.controls['myControl'].valueChanges.subscribe( (value) => { if (this.myForm.controls['myControl'].valid) { // ... } } );
// 更改后的代码 this.myForm.controls['myControl'].statusChanges.subscribe( (status) => { if (status == 'VALID') { // ... } } );
在这个示例中,代码已从valueChanges更改为statusChanges,并检查控件的状态是否为'VALID”。这将强制 Angular Validators 在数据绑定改变时进行验证,并且可以解决不触发Validators的问题。