在我的一个项目中,我有一个场景,我需要根据另一个字段将一个字段标记为正确或不正确。我创建了一个示例,可以在这里提出这样的问题。
主要问题:我无法通过更改ANOTHER输入的值来更改输入的状态颜色。
为了更好地理解该问题,我将尝试通过图像进行解释:第一步-我在“较小值”输入中写了一个较大的数字并将其模糊处理,它显示了预期的错误:
第二步-我在“更大的数字”输入中写了一个更大的数字并将其模糊,因此我希望“较小值”输入为绿色,但仍保持红色:
我想要实现的是:每当较小的值较大时,其输入就会被涂成红色,而当较小的值较小时,其输入就会被涂成绿色。
当我更改“较小值”的值并使输入模糊时,此方法有效。但是,例如,当我在“较大数字”输入中写入较小的数字并将其模糊时,“较小值”输入如果之前为绿色,则不会变为红色。
这是我的表单和验证器功能:
this.thisForm = new FormGroup({
smallerValue: new FormControl('', [
this.validateSuccessShortName.bind(this)
]),
biggerNumber:new FormControl('', [
Validators.required
])
});
}
validateSuccessShortName(control: AbstractControl) {
if (parseInt(control.value,10) > parseInt(this.biggerNumber, 10)) {
return {value: control.value};
}
return null;
}
我编写了此函数来尝试手动触发验证,并且确实触发了验证,只是更大的数字输入无法更改较小输入的验证状态:
updateFields(){
for (const field in this.thisForm.controls) {
this.thisForm.controls[field].updateValueAndValidity();
}
}
这是展示问题的STACKBLITZ。
如果您需要更多详细信息,请告诉我!
疯!答案是将内置类手动绑定到离子项目:
<ion-item [class.ng-invalid]="!thisForm.controls.smallerValue.valid" [class.ng-valid]="thisForm.controls.smallerValue.valid">
这个答案归功于github问题的brianlittmann:
https://github.com/ionic-team/ionic/issues/6040#issuecomment-315037781
有效的stackblitz:https ://stackblitz.com/edit/ionic-ctmumh ? file = pages/home/home.html
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句