【发布时间】:2017-10-19 21:38:06
【问题描述】:
我创建了一个自定义加载屏幕,其中一个 Angular 组件(带有 SVG 动画的全屏 DIV)显示在所有其他 HTML 之上。我的问题是调用加载屏幕。目前,我在全局服务中有一个带有“_isLoading”变量的布尔值。设置为 true 时,会显示加载屏幕(反之亦然),如下所示:
<app-loading-screen *ngIf="dataService._isLoading"></app-loading-screen>
<div id="pageWrapper">
<app-childcomponent></app-childcomponent>
</div>
默认情况下,“_isLoading”变量设置为“true”以在初始应用程序加载时显示加载屏幕。一旦调用了“ngAfterViewInit”,“childcomponent”就会将“_isLoading”变量设置为“false”,因为随后加载了来自子组件的HTML。这会引发“ExpressionChangedAfterItHasBeenCheckedError”。我已经阅读了关于错误的In-Depth Blog Post,并且我知道这个问题是由于子组件更改了父组件中的摘要循环刚刚检查的变量而发生的。我不知道如何解决这个问题。我假设其他人之前已经创建了加载屏幕......这样做的标准/规范是什么?
【问题讨论】:
-
我针对类似问题提出了解决方案:stackoverflow.com/questions/46837438/…
-
我从来没有遇到过这个错误,因为我是反过来的。我在开始时将其设置为 false,然后在加载函数时将其标记为 true(例如,当它订阅 observable 并检索数据时),然后在完成时将其设置回 false。
-
@AngularInDepth.com - 我已经阅读了它,我什至已将原始问题中的链接发布到 Stack Overflow。但这并不能回答我的问题 - 我在问在设计自定义加载屏幕时可以/应该使用什么方法来解决这个问题。
标签: angular