Angular7 * ngIf在具有isLoading的应用程序组件中|来自redux存储的异步管道抛出“ ExpressionChangedAfterItHaHasBeenCheckedError”

时间:2018-11-01 12:26:14

标签: angular angular-pipe ngif angular7

我有一个不确定的微调器,我在*ngIf(始终已加载)中使用app.component.html,并且正在查看我的redux存储区中的变量,该变量将与{ app.component.ts使用@select() isLoading;管道。

问题是,由于某种奇怪的原因,随着我的应用程序的扩展,它完全停止了工作,并抛出了此错误:

| async

我更改该变量的方式是在不同的地方注入通知服务,然后调用ERROR Error: "ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'ngIf: [object Object]'. Current value: 'ngIf: true'." 函数

现在,在该函数内部是我将动作分派到SET的唯一位置,该变量设置为true / false(由于一次加载了多个东西,因此不进行切换)。

1 个答案:

答案 0 :(得分:0)

我最终绕过了* ngIf,所以我一直不删除它/将它添加到DOM中。

相反,我在app.component.html的spinner html标记上使用了[ngClass]绑定到控制器中的属性,在那里我根据redux存储区中isLoading布尔值发出的值应用了.hiddenSpinner。 :

 this.loadingSubscription = this.isLoading.subscribe(data => {
    if(data == true){this.hiddenSpinner = "" } else { this.hiddenSpinner = "hiddenSpinner"}

在style.css中,我所做的只是:

.hiddenSpinner { display: none!important }