Angular7 *ngIf 在带有 isLoading 的应用程序组件中 |来自 redux store 的异步管道抛出 "ExpressionChangedAfterItHasBeenCheckedError"
Angular7 *ngIf in app component with isLoading | async pipe from redux store throws "ExpressionChangedAfterItHasBeenCheckedError"
我有一个不确定的微调器,我在 app.component.html
中使用 *ngIf
(始终加载),它正在查看我的 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'."
我更改该变量的方式是在不同的地方注入我的通知服务,然后调用 notification.loading().
函数
现在,在该函数内部是第一个位置,我在其中分派操作以将该变量设置为 true/false(由于一次加载多个内容而未切换它)。
我最终绕过了 *ngIf,所以我不再将 it/adding 删除到 DOM 中。
相反,我在 app.component.html 中的微调器 html 标记上使用 [ngClass] 绑定到控制器中的 属性,在那里我应用了 .hiddenSpinner 基于redux 存储中 isLoading 布尔值发出的值:
this.loadingSubscription = this.isLoading.subscribe(data => {
if(data == true){this.hiddenSpinner = "" } else { this.hiddenSpinner = "hiddenSpinner"}
在 style.css 我所做的是:
.hiddenSpinner { display: none!important }
我有一个不确定的微调器,我在 app.component.html
中使用 *ngIf
(始终加载),它正在查看我的 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'."
我更改该变量的方式是在不同的地方注入我的通知服务,然后调用 notification.loading().
函数
现在,在该函数内部是第一个位置,我在其中分派操作以将该变量设置为 true/false(由于一次加载多个内容而未切换它)。
我最终绕过了 *ngIf,所以我不再将 it/adding 删除到 DOM 中。
相反,我在 app.component.html 中的微调器 html 标记上使用 [ngClass] 绑定到控制器中的 属性,在那里我应用了 .hiddenSpinner 基于redux 存储中 isLoading 布尔值发出的值:
this.loadingSubscription = this.isLoading.subscribe(data => {
if(data == true){this.hiddenSpinner = "" } else { this.hiddenSpinner = "hiddenSpinner"}
在 style.css 我所做的是:
.hiddenSpinner { display: none!important }