我试图以编程方式在formControl中设置布尔值。但这标志着形式变得肮脏。通过Angular文档,“对控件价值的程序化更改不会标记为脏” https://angular.io/api/forms/AbstractControl#pristine
代码:
this.formGroup.get(ruleOutput.attributeKey).setValue(JSONUtils.parseJSON(ruleOutput.attributeValue))
FOR FYI,JSONParser Code(不要认为这里有任何错误):
public static parseJSON(input : any) : any{
try{
return JSON.parse(input);
}catch(Error){
console.log("Inside JSON Utils: Error while parsing input JSON :");
console.log(input);
console.log(Error.toString());
console.log("Return Empty JSON");
return JSON.parse("{}");
}
}
点是在设置值之后,表单被标记为脏。
请帮助我找到根源。
答案 0 :(得分:1)
仅适用于getters
,而非setters
。如果你看一下setValue
的源代码,你会发现它也进行了验证,因此将控件标记为脏,因为它已被更改:
https://github.com/angular/angular/blob/5.1.0/packages/forms/src/model.ts#L744
您可以做的是,设置表单值,然后调用myFrom.markAsPristine()
。