在我网站的每个页面上,一旦用户登录,我就会获得用户数据。
这个单一的API调用是我应用中最重要的一个。
我从这个API调用获得的信息在我的应用程序中的许多组件中使用,我需要确保我的模板“等待”进行此API调用,然后再继续显示我的申请数据。
此API调用在服务构造函数中定义,这就是我的服务中此方法的样子:
public userData;
...
getUserData()
{
if (this.getToken()) {
console.log("Getting user..");
this.http.get('thisUser?token='+this.getToken())
.map((res:Response) => res.json())
.subscribe(
data => {
this.userData = data.user;
},
err => { this.checkToken(err); }
);
}
这意味着我的JwtService.userData变量必须在显示我的模板之前获取信息(我在我的组件中使用了*ngIf="JwtService.userData
)。
我如何确保首先获得这些数据?
答案 0 :(得分:1)
这取决于您的应用程序的架构。
您可以使用Analytics.Management.Uploads.uploadData(accountId, webPropertyId, customDataSourceId, mediaData);
等模板轻松创建应用程序。实施生命周期监听器<div #child><div/>
并在OnInit
方法中执行您想要的任何检查,然后使用ngOnInit
加载主要组件:DynamicComponentLoader
。
答案 1 :(得分:1)
这个问题很有意思。
我不知道我的解决方案是否能够正常运行,因为我正在使用智能手机进行编写而无法测试我的代码。
您可能正在使用路由器,因此您所处的位置为<router-output>
。
你可以尝试写这样的东西:
<div ngIf="(callDone | async)">
<router-output></router-output>
</div>
其中callDone
是Observable
,在API调用之前设置为false
,并在回调中设置为true。
另一种可能性是将所有组件链接到Observable
callDone
。角度变化检测器应该完成所有工作