当我使用(更改)操作方法调用服务时,出现此错误:
错误错误:ExpressionChangedAfterItHasBeenCheckedError:表达 检查后已更改。先前的值:'ng-untouched: 真正'。当前值:“ ng-untouched:false”
我的代码:
onChange(event) {
const messageToDisplay = "Message test";
this.popinService.open(messageToDisplay).subscribe((result: ConfirmPopinResultType) => {
if (result === ConfirmPopinResultType.CONFIRM) {
console.log("test");
}
});
}
onChange是输入反应形式(选择下拉列表)上的事件处理程序
<form [formGroup]="poolForm"> <select id="pool-select" #item (change)="item.value = onChangePool(item.value)" formControlName="item"> <option *ngFor="let item of items" [value]="item.name">{{ item.name }}</option> </select> </form>
当我在Change事件处理程序上调用poppin服务时会发生异常错误(显示带有两个按钮的确认和取消弹出窗口)
感谢您的帮助!
答案 0 :(得分:2)
您正在听DOM元素事件。
(change)="onChange(item.value)"
并且您收到有关Angular表单的错误。
先前值:“ ng-untouched:true”。当前值:“ ng-untouched:false”
这两个冲突,因为ngModel
正在跟踪对表单组件的更改。 Angular Forms使用(ngModelChange)
来通知组件更改,而Angular Reactive Forms使用valueChanges
观察对象。
您尚未共享附加了(change)
事件处理程序的位置,但显然在ngModel
还在使用的表单输入中。
您应该使用(ngModelChange)
而不是(change)
。