首页 > 解决方案 > 如何格式化选定的值和补丁?

问题描述

我在我的 Angular 应用程序中使用响应式表单,我必须格式化所选值并将它的新值修补到该表单控件。

我试图简单地订阅控制值更改并修补新值,但我收到错误:

Maximum call stack size exceeded

如何格式化 Reactive Form 控件的选定值?

这是我的代码:

this.ritiroForm.controls.quando.valueChanges.subscribe(() => {
  const data = new Date(this.selectedOra).toLocaleString();
  this.ritiroForm.get('quando').patchValue(data);
});

标签: angular

解决方案


当您使用patchValue函数时,它会再次触发valueChanges,因此您正在进行无限循环。

为避免这种情况,您可以在 中传递一个参数{emitEvent: false}patchValue并且 angular 不会valueChanges再次触发。

this.ritiroForm.controls.quando.valueChanges.subscribe(() => {
  const data = new Date(this.selectedOra).toLocaleString();
  this.ritiroForm.get('quando').patchValue(data, {emitEvent: false});
});

推荐阅读