javascript - 检查后表达式发生了变化-angular

标签 javascript html angular typescript

当我在(更改)操作方法中调用服务时,出现此错误:

ERROR Error: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'ng-untouched: true'. Current value: 'ng-untouched: false'

我的代码:

onChange(event) { 

  const messageToDisplay = "Message test";
  this.popinService.open(messageToDisplay).subscribe((result: ConfirmPopinResultType) => {
    if (result === ConfirmPopinResultType.CONFIRM) {
      console.log("test");
    }
  });        
}

onChange 是输入 react 表单(选择下拉列表)上的事件处理程序

<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 服务时发生异常错误(显示带有两个按钮 Confirm 和 Cancel 的弹出窗口)

感谢您的帮助!

最佳答案

您正在监听 DOM 元素事件。

(change)="onChange(item.value)"

并且您收到了与 Angular 表单相关的错误。

Previous value: 'ng-untouched: true'. Current value: 'ng-untouched: false'

两者有冲突
因为 ngModel 正在跟踪对表单组件的更改。
Angular Forms 使用(ngModelChange) 通知组件更改。
Angular Reactive Forms 使用 valueChanges observables。

您还没有分享附加 (change) 事件处理程序的位置,但它显然位于 ngModel 使用的表单输入中。

您应该使用 (ngModelChange) 而不是 (change)

关于javascript - 检查后表达式发生了变化-angular,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54013274/

相关文章:

javascript - 尝试获取信息时 useEffect 不起作用

javascript - 谷歌地图信息窗口在鼠标悬停监听器上闪烁......如何阻止它闪烁?

javascript - 将闪烁动画添加到 html 单元格边框

javascript - 创建 Javascript 在 iframe 之前添加 div 标签

angular - 使用 Azure Web 应用部署 Angular 2

javascript - 订阅时Angular 2更改数组值

javascript - 添加 &lt;meta name ="viewport"> 并进行移动检测

javascript - 如何使用 frog 将 javascript 转换为 dart?

javascript - 如果 li 为空,则在 jQuery 中隐藏 excluding span 属性

angular - 我们如何在没有 ngx-cookie 服务的情况下访问 Angular 6 中的 cookie