我有表单控件用于选择一些值(例如-性别)和<input type="radio">
对。下一个要求是:
我的[[问题”是FormControl仅具有valueChanges事件,该事件发出after值已被更改。我需要以编程方式设置先前的值:
this.genderControl.setValue(GenderEnum.MALE, {emitEvent: false});
一些伪代码示例:
component.html
<input
formControlName="gender"
type="radio"
value="female"
id="female"
/>
<input
formControlName="gender"
type="radio"
value="male"
id="male"
/>
<input
formControlName="gender"
type="radio"
value="other"
id="other"
/>
component.ts
this.genderControl.valueChanges .pipe( distinctUntilChanged(), startWith(null), pairwise(), takeUntil(this._destroy$) ).subscribe(([prev, next]: [GenderEnum, GenderEnum]) => { this.openWarningModal().afterClosed().subscribe((selectedAction: CommonModalsActionsEnum) => { if (selectedAction === CommonModalsActionsEnum.CONFIRM) { this.handleChangeGender(next); } if (selectedAction === CommonModalsActionsEnum.CLOSE) { this.genderControl.setValue(prev, {emitEvent: false}); } }); });
可能的可能在删除FormControl中,使用ngModel和input click事件的订阅。通过这种方式,单击处理程序将显示模式并更改或不更改与ngModel相关的var。但是我希望存在更清晰的解决方案!解决方案
ngModelChanges()
event,它是ngModel指令的@Output。模型更改时会触发。