gpt4 book ai didi

javascript - ExpressionChangedAfterItHasBeenCheckedError 解决方法

转载 作者:行者123 更新时间:2023-12-03 03:41:29 25 4
gpt4 key购买 nike

我正在实现以下*ngIf。我知道从技术上讲我不应该从 *ngIf 中调用函数,但黑客需要它:

<div *ngIf="!ddlAuthorsSelect2Bound && wireUpSelect2()"></div>

无论如何,以下实现工作正常:

<div *ngIf="wireUpSelect2()"></div>

但是,由于某种原因,这个 *ngIf 被多次调用。所以我在第一个代码示例中添加了额外的成员变量检查,以防止额外的函数调用。这也按预期工作,但 ng2 将以下错误写入控制台:

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

你知道我可以抑制这个错误的方法吗?

最佳答案

快速而肮脏的解决方法是将其放入您的组件中: public ngDoCheck(): void { this.cdRef.detectChanges(); }.

确保导入:import {..., ChangeDetectorRef} from '@angular/core';

并将其包含在构造函数中:constructor(..., private cdRef:ChangeDetectorRef) {...}

Thiscommon @Angular 4.2.x 的问题。无论这是否是最佳实践,该解决方法都比添加一项生命周期检查要繁重得多。如果我没记错的话,您不必为 4.3.x 执行此操作。

关于javascript - ExpressionChangedAfterItHasBeenCheckedError 解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45597723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com