停止formcontrol和表单组

时间:2017-08-12 17:51:24

标签: angular

我有一个formgroup,它有一个formcontrol。我已经订阅了formgroup和formcontrol的valuechanges事件。点击按钮我想禁用并重置formcontrol的值而不激活valuechanges所以我使用了emitEvent:false,它不会触发formcontrol的值更改但是值更改了formgroup被解雇。我在这里有一个样本plunker演示https://plnkr.co/edit/cN2wROc7o16w52ZEPZgH?p=preview。这是预期的行为或问题。可以有人指导我

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

1 个答案:

答案 0 :(得分:5)

您可以使用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});
}

你的掠夺者:https://plnkr.co/edit/bXTV8dqqJBDMAuAwuz5a?p=preview