小编Ang*_*per的帖子

Angular - 在导航之前等待服务完成

我正在尝试在服务中设置数据,然后在服务中填充数据后导航,我有一个时间问题,页面在服务能够填充之前导航.

我在服务中有以下代码

addToken(token) {
  this.cookieService.set( 'token', token );
}
Run Code Online (Sandbox Code Playgroud)

单击按钮时的以下代码: -

this.token.addToken(res);
this.router.navigate(['/admin']);
Run Code Online (Sandbox Code Playgroud)

触发路由器后,/ admin页面会触发带有以下标题的端点: -

authHttpHeaders = new HttpHeaders({
    'Authorization': 'Bearer ' + this.token.getToken(),
    'Content-Type' : 'application/json',
    'Cache-Control': 'no-cache'
});
Run Code Online (Sandbox Code Playgroud)

getToken()函数只接收来自cookie的令牌: -

getToken() {
  return this.cookieService.get('token');
}
Run Code Online (Sandbox Code Playgroud)

如何在触发路由器导航之前确保addToken()已完成.

我知道我可以通过setTimeout实现它,但我真的不喜欢这样做.

在导航路由器被触发之前,我宁愿有某种形式的可观察或看到令牌不等于null或空.

在此先感谢您的帮助.

javascript typescript angular-services angular angular6

1
推荐指数
1
解决办法
657
查看次数