动态为matTooltip分配值时的ExpressionChangedAfterItHasBeenCheckedError

萨默尔·汗(Sameer Khan)

当动态赋值给matTooltip我时,会出现此错误ExpressionChangedAfterItHasBeenCheckedError
我尝试使用进行修复,detectChanges()但出现此错误Maximum call stack size exceeded

要求:文本被截断时,我需要显示工具提示。

HTML

<div class="container">
  <p *ngFor="let each of tooltipsData" #element [matTooltip]="isTextTruncated(element) ? each : null">{{each}}</p>
</div>

打字稿

tooltipsData = [
 "Lorem Ipsum",
 "Lorem Ipsum is simply dummy text",
 "Lorem",
 "Lorem Ipsum is simply dummy text of the printing and typesetting"
];

isTextTruncated(element: any) {
 // this.cdr.detectChanges();
 return element.scrollWidth > element.clientWidth;
}

Stackblitz示例

萨默尔·汗(Sameer Khan)

TL; DR -通话detectChanges()ngAfterViewInit()

import { Component, AfterViewInit, ChangeDetectorRef } from '@angular/core';
...
constructor(private cdr: ChangeDetectorRef) { }
...
ngAfterViewInit() {
 this.cdr.detectChanges();
}

说明

角运行生命周期挂钩列表,ngOnInitngAfterViewInit在这个过程中的角度存储先前值和当前值(例如,在比较ngOnInitxfalsengAfterViewInit xtrue),而当值改变lifecycle hooks正在运行则发生该错误Expression...Previous value: 'message: false'. Current value: 'message: true'.

我的情况

我正在显示基于DOM操作的工具提示(当文本被截断时),因此ngOnInit在DOM没有加载任何元素,因此最初的值是nulland在ngAfterViewInit元素中加载并且工具提示的值从更改nullLorem Ipsum is simply dummy text因此,我们需要告诉angular以检测的变化 ngAfterViewInit

其他方案 异步API

更新资料

上面的解决方案适用于示例stackblitz,但是在我的实际角度项目中它无效,因为我从Async API获得工具提示值

所以我detectChanges()在API完成后调用了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

动态为深层嵌套列表分配值

来自分类Dev

动态为对象属性分配值

来自分类Dev

动态为char *分配内存时出错

来自分类Dev

在SSIS中为变量动态分配值

来自分类Dev

如何在ReactJS中为引用分配动态值?

来自分类Dev

为变量动态分配值的最佳方法?

来自分类Dev

在MATLAB基本工作空间中为变量分配动态值

来自分类Dev

如何在ReactJS中为引用分配动态值?

来自分类Dev

MySQLi-为变量动态分配行值

来自分类Dev

在shell中为动态命名的变量分配带空格的值

来自分类Dev

用公式为矩阵元素分配值时出错

来自分类Dev

填充datagridview时,为XML中的缺失元素分配值

来自分类Dev

在Pygame中为矩形分配值时出错

来自分类Dev

为LiveData分配空值时,应用程序挂起

来自分类Dev

使用fopen()时未为文件指针分配值

来自分类Dev

尝试为指针分配新值时出现分段错误

来自分类Dev

在iml过程中为矩阵分配值时出错

来自分类Dev

为jquery分配动态ID

来自分类Dev

为jquery分配动态ID

来自分类Dev

为动态 UIButtons 分配标签

来自分类Dev

为值分配颜色

来自分类Dev

为值分配颜色

来自分类Dev

在注释中分配动态值

来自分类Dev

如何在TypeScript中为类属性动态分配值

来自分类Dev

如何在Python中为类属性动态分配值?

来自分类Dev

SASS中是否有办法为文件之间的变量动态分配值

来自分类Dev

为动态数组元素分配值会导致下标超出范围错误

来自分类Dev

动态地为Angular 2-Ionic 2中的SASS mixin分配值

来自分类Dev

为属性动态分配值取决于另一个列表