angular - 如何格式化选定的值和补丁?
问题描述
我在我的 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);
});
解决方案
当您使用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});
});
推荐阅读
- flutter - 当我输入“flutter”时,Cmd 就消失了
- javascript - 用于功率查找的 openei.org API 文本输出
- reactjs - 有没有办法与 Django 一起使用热构建反应?
- amazon-web-services - 使用 AWS Route 53 的 Heroku 应用程序的自定义域
- python - Avoid class initialization modified in method in python
- java - 使用 HashMap 计算数组中某些整数的数量
- css - 将按钮光标 URL 设置为有效图像
- c - 在函数内部定义外部变量
- polarion - 有没有办法在 Polarion 中获取项目的所有 LiveDoc 文档
- ruby-on-rails - Rails Active Storage(本地)磁盘服务是否适合生产?