2017-08-12 46 views
2

我有一个formgroup它有一个formcontrol。我订阅了formchange和formcontrol的valuechanges事件。点击一个按钮,我想禁用并重置formcontrol的值而不触发valuechanges,所以我使用了emitEvent:false,它没有触发formchange的valuechanges,但formgroup的valuechanges被激发。我这里有一个样本plunker演示https://plnkr.co/edit/cN2wROc7o16w52ZEPZgH?p=preview。就是这种预期的行为或issue.Can有人指导我停止FormControl和表单组的值改变

ResetAndDisable(){ 
    this.ParentGroup.controls['test'].reset(null,{emitEvent:false}); 
    this.ParentGroup.controls['test'].disable({emitEvent:false}); 
} 
Enable(){ 
    this.ParentGroup.controls['test'].enable({emitEvent:false}); 
} 

回答

4

您可以使用emitEvent:falseonlySelf:true,这样的组合,onlySelf:true ...

如果onlySelf为真,则此更改只会影响此FormControl的验证,而不会影响其父组件。默认为false

那么你可以做的则是:

ResetAndDisable(){ 
    this.ParentGroup.controls['test'].reset(null,{onlySelf:true, emitEvent:false); 
    this.ParentGroup.controls['test'].disable({onlySelf:true, emitEvent:false}); 
} 
Enable(){ 
    this.ParentGroup.controls['test'].enable({onlySelf:true, emitEvent:false}); 
} 

你plunker:https://plnkr.co/edit/bXTV8dqqJBDMAuAwuz5a?p=preview