gpt4 book ai didi

Angular 异步验证器的状态未反射(reflect)在表单字段的错误状态中

转载 作者:行者123 更新时间:2023-12-02 03:35:17 27 4
gpt4 key购买 nike

我在 zip 字段上有一个异步验证器:

zip: ['', {
validators: [
Validators.required,
Validators.minLength(5),
Validators.maxLength(5)
],
asyncValidators: [
adPostFormValidators.isValidZip(this.locationService)
]
},
],

但是,在我点击离开该字段之前,该字段似乎没有反射(reflect)出来自异步验证器的错误。例如,这是在我点击之前(null 是该字段的错误状态):

enter image description here

我知道异步验证器已经运行,因为我将它的结果输出到控制台:

enter image description here

然后,当我点击退出或失去焦点时,错误状态现在是准确的:

enter image description here

但是,验证器没有再次运行,因为控制台中没有记录任何新内容。

最佳答案

看来因为我正在使用 ChangeDetectionStrategy.OnPush,所以我不得不手动标记异步验证器以进行检查:

ref.markForCheck()
return { 'Is not a valid zip': { value: control.value } } as ValidationErrors

其中 ref 的类型为 ChangeDetectorRef

关于Angular 异步验证器的状态未反射(reflect)在表单字段的错误状态中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50419501/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com