Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用布尔值设置Angular 2中的formControl';正确';以编程方式将表单标记为脏的_Angular_Angular Reactive Forms - Fatal编程技术网

使用布尔值设置Angular 2中的formControl';正确';以编程方式将表单标记为脏的

使用布尔值设置Angular 2中的formControl';正确';以编程方式将表单标记为脏的,angular,angular-reactive-forms,Angular,Angular Reactive Forms,我试图以编程方式在formControl中设置布尔值。但这是标记形式为肮脏。根据Angular docs,“对控件值的编程更改不会将其标记为脏” 代码: 仅供参考,JSONParser代码(不要认为这里有任何错误): 点是设置值后,窗体被标记为脏 请帮助我找出这一问题的根本原因。这只适用于获取者,而不是设置者。如果查看setValue的源代码,您将看到它也执行验证,因此将控件标记为脏控件,因为它已被更改: 您可以做的是,设置表单值,然后调用myFrom.markAsPristine() if

我试图以编程方式在formControl中设置布尔值。但这是标记形式为肮脏。根据Angular docs,“对控件值的编程更改不会将其标记为脏”

代码:

仅供参考,JSONParser代码(不要认为这里有任何错误):

点是设置值后,窗体被标记为脏


请帮助我找出这一问题的根本原因。

这只适用于
获取者,而不是
设置者。如果查看
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("{}");
    }
}