停止formcontrol和formgroup的Valuechanges

abh*_*ddy 4 angular

我有一个formgroup控件有一个formcontrol.我已经订阅了formgroup和formcontrol的valuechanges事件.点击按钮我想禁用并重置formcontrol的值而不激活valuechanges所以我用过emitEvent:false它不会触发formcontrol的值更改但是formgroup的值更改被触发.I在这里有一个示例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});
 }
Run Code Online (Sandbox Code Playgroud)

AJT*_*T82 5

你可以结合使用emitEvent:falseonlySelf:true,onlySelf:true......

如果onlySelf为true,则此更改将仅影响此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});
}
Run Code Online (Sandbox Code Playgroud)

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