Angular 17 Signal Effect重置表单触发NG0600错误原因咨询
Angular 17 Signal Effect 重置表单触发 NG0600 错误问题
问题详情
在Angular 17中使用Signal Effect时遇到如下问题:
- 当
facilities信号更新时,尝试在Effect中调用表单的reset方法,浏览器控制台抛出错误:NG0600: 默认情况下,不允许在computed或effect中写入信号。请在CreateEffectOptions中使用allowSignalWrites以在effects中启用此操作。
- 移除Effect中的
this._form.reset代码后,错误消失;添加allowSignalWrites: true选项后代码可正常运行,但存在疑惑:并未手动写入任何信号,只是执行了表单重置操作。
涉及代码如下:
formResetEffect = effect(() => { if (this.facilities()) { this._form.reset({ disabled: false, value: null }); } }, {allowSignalWrites: true});
补充发现
后续定位到该问题仅在使用PrimeNG的p-dropdown组件时出现,查看PrimeNG的GitHub代码后发现该组件内部已采用信号实现。疑问:是否是p-dropdown组件内部的信号写入操作触发了这个NG0600错误?
内容的提问来源于stack exchange,提问作者Ersch
相关产品推荐
相关产品推荐

