在我的主要组件的ngOnInit中,我确实得到了一些全局设置:
ngOnInit() {
this._service1.initGlobalData()
this._service2.initGlobalData2()
}
这两个调用初始化_service1和_service2,然后在我的应用程序的几个不同位置使用。 我想确保在开始渲染我的应用程序之前完成这两个调用。
在Angular 2中有没有具体的方法呢?
我想到的唯一解决方案是根据这两个init调用返回的promise设置一个微调器。
答案 0 :(得分:4)
答案不是很受欢迎,但我认为用*ngIf="data"
包装模板的最简单方法是模板只会在data
分配值后才会呈现。
路由器(取决于您正在使用的版本)可能具有生命周期回调,允许延迟添加组件,直到解决了承诺。
答案 1 :(得分:3)
您可以使用https://angular.io/docs/ts/latest/api/core/index/APP_INITIALIZER-let.html
示例(请查看页面底部):https://github.com/angular/angular/blob/master/modules/%40angular/router/src/common_router_providers.ts
答案 2 :(得分:2)
通常我的团队和我使用ngIf在内容准备好后呈现内容。
例如:
<div *ngIf="_service1">
// content for _service1
</div>
<div *ngIf="_service2">
// content for _service2
</div>
<div *ngIf="_service1">
// content for _service1
</div>
<div *ngIf="_service2">
// content for _service2
</div>