abhilash reddy
abhilash reddy

Reputation: 1586

Stop Valuechanges of formcontrol and the formgroup

I have a formgroup which has a formcontrol. I have subscribed the valuechanges event of both formgroup and formcontrol.With a button click i would like to disable and reset value of formcontrol without firing valuechanges so i have used emitEvent:false which doesnot fire the valuechanges of the formcontrol but valuechanges of the formgroup is fired.I have a sample plunker demo here https://plnkr.co/edit/cN2wROc7o16w52ZEPZgH?p=preview .Is this expected behavior or an issue.Can somebody guide me

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

Upvotes: 7

Views: 15219

Answers (1)

AVJT82
AVJT82

Reputation: 73357

You can use a combination of emitEvent:false and onlySelf:true, where onlySelf:true ...

If onlySelf is true, this change will only affect the validation of this FormControl and not its parent component. This defaults to false.

So what you can do is then:

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

Upvotes: 12

Related Questions