使用布尔值设置Angular 2中的formControl';正确';以编程方式将表单标记为脏的
我试图以编程方式在formControl中设置布尔值。但这是标记形式为肮脏。根据Angular docs,“对控件值的编程更改不会将其标记为脏” 代码: 仅供参考,JSONParser代码(不要认为这里有任何错误): 点是设置值后,窗体被标记为脏使用布尔值设置Angular 2中的formControl';正确';以编程方式将表单标记为脏的,angular,angular-reactive-forms,Angular,Angular Reactive Forms,我试图以编程方式在formControl中设置布尔值。但这是标记形式为肮脏。根据Angular docs,“对控件值的编程更改不会将其标记为脏” 代码: 仅供参考,JSONParser代码(不要认为这里有任何错误): 点是设置值后,窗体被标记为脏 请帮助我找出这一问题的根本原因。这只适用于获取者,而不是设置者。如果查看setValue的源代码,您将看到它也执行验证,因此将控件标记为脏控件,因为它已被更改: 您可以做的是,设置表单值,然后调用myFrom.markAsPristine() if
请帮助我找出这一问题的根本原因。这只适用于
获取者,而不是设置者。如果查看setValue
的源代码,您将看到它也执行验证,因此将控件标记为脏控件,因为它已被更改:
您可以做的是,设置表单值,然后调用myFrom.markAsPristine()
if(ruleDataList&&ruleDataList.length>0){ruleDataList[0].ruleOutputList.forEach(ruleOutput=>if(DisplayUtils.isKeyDisplayable(ruleOutput.attributeKey,“*”){this.formGroup.get(ruleOutput.attributeKey).setValue(JSONUtils.parseJSON(ruleOutput.attributeValue));this.formGroup.get(ruleOutput.attributeKey.markAsPristine;}})this.ruleDataAlreadyExists=true;}请为此创建一个演示,我不明白为什么会发生这种情况。是的,现在,我显式添加了markAsPristine()。另一件事是,它只发生在“boolean”中,而不是其他数据类型。
this.formGroup.get(ruleOutput.attributeKey).setValue(JSONUtils.parseJSON(ruleOutput.attributeValue))
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("{}");
}
}