【发布时间】:2021-08-18 09:41:08
【问题描述】:
我的 Angular 应用程序有一些模块,它们是延迟加载的。在模块 A 的一个组件中,我想在使用 *ngIf 渲染组件中的所有 html 标签之前检查该模块是否已加载。我怎样才能做到这一点?谢谢。
更新 1。
export class CustomerManModule extends AppModuleBase {
constructor(injector: Injector) {
super(injector, AppConsts.module.customerMan);
var localeName = locale();
this.appService.getLanguage(localeName, AppConsts.module.customerMan).subscribe((messages: any) => {
let language = new Object();
language[localeName] = messages;
loadMessages(language);
})
}
}
在我调用loadMessages 函数后,所有的本地化字符串都会被加载,我只想在模块加载时加载这些字符串。之后,该模块的所有组件都需要检查这些字符串是否已加载以继续渲染。
【问题讨论】:
-
如果你问的是全局加载器,看看这个 SO:stackoverflow.com/questions/54135784/…
-
谢谢。但这不是我的情况。
-
我们是在讨论 moduleA 内部的组件还是来自不同的模块?
-
是的,它在模块 A 中。在模块 A 的构造函数中,我从数据库中为整个模块加载了一些数据。该模块的所有组件都需要在渲染自己之前检查数据是否准备好。
-
啊,好吧。然后我认为我的回答有点错误,因为您不等待延迟模块加载,而是等待您请求的数据。我现在没时间更新。与此同时,这可能会有所帮助:当您从数据库加载数据时,您很可能会使用 Angular 的 HttpClient。在那里你得到一个 Observable 返回。您可以将此 Observable 存储在自定义服务中,并通过 Async Pipe 从您的组件中访问它。 angular.io/api/common/NgIf(搜索异步)
标签: angular typescript