如何以反应性形式的价值退出递归呼叫



我正在观察formControlvalueChanges。形式控件是date picker。每当选择日期时,我都在尝试将其从原始MM-dd-yyyy格式重新格式化为yyyy-MM-dd。我直接修改表单控制值。因此,它给了我递归的呼叫错误。显然是真的。有什么工作吗?

代码:

this.parentForm.controls['myControlName'].valueChanges.subscribe((val)=>{
this.parentForm.controls['myControlName'].setValue(this._datePipe.transform(new Date(val), 'yyyy-MM-dd'));
});
<input #inputDate type="text" class="form-control" placeholder="Select date"
  [formControl]="parentForm.controls['myControlName']"
  [value]="selectedDate | date : 'MM-dd-yyyy'"/>
  <datepicker [ngModel]="selectedDate" [minDate]="minDate"
    [maxDate]="maxDate"
    [showWeeks]="false"
    [startingDay]="1"
    (selectionDone)="onSelectionDone($event)">
  </datepicker>

错误:

异常:./datepickercomponent类中的错误 datePickerComponent-内联模板:13:8引起: 许多递归错误_handler.js:54原始异常:太多 递归

作为表单控件的setValue方法将导致valueChange事件默认情况下,因此您将遇到Deadloop。您可以将emitEvent设置为false以防止它。

this.parentForm.controls['myControlName'].setValue(this._datePipe.transform(new Date(val), 'yyyy-MM-dd'), { emitEvent: false });

最新更新