以编程方式在布局值为“true”的Angular 2中设置formControl将表单标记为脏

时间:2017-12-12 15:03:47

标签: angular angular-reactive-forms

我试图以编程方式在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("{}");
    }
}

点是在设置值之后,表单被标记为脏。

请帮助我找到根源。

1 个答案:

答案 0 :(得分:1)

仅适用于getters,而非setters。如果你看一下setValue的源代码,你会发现它也进行了验证,因此将控件标记为脏,因为它已被更改:

https://github.com/angular/angular/blob/5.1.0/packages/forms/src/model.ts#L744

您可以做的是,设置表单值,然后调用myFrom.markAsPristine()