0
我有一个Guard保护某个路线。在canActive
方法中,我需要创建两个http请求,第二个http请求是基于第一个响应触发的。然而,第二个请求从来没有做过,我认为它是关于返回Observables的嵌套构造。Angular2:Guard中的嵌套Observable
1 canActivate(route: ActivatedRouteSnapshot,
2 state: RouterStateSnapshot) : Observable<boolean>|boolean {
3 return this.provider.getA().map(
4 dataA => {
5 return this.provider.getB().map(
6 dataB => {
7 return (dataB.allowed);
8 }
9 );
}
);
}
两者木屐()和getB()返回以下:
getA() : Observable<any> {
return this.http.post(URL,payload).
map(response => response.json());
};
代码被简化了,但您可能会认为getA()和getB()可以正常工作。但是,当Guard被调用时,getA()会在网络上正常发送,但getB()不会被发送。调试器的线而自行退出5.
一两件事,但是打字稿显示一个警告,可能告诉我已经解决,我是个太过与观测量尤其是菜鸟知道用它做:
Observable<Observable<boolean>>' is not assignable
to type 'Observable<boolean>'
为了猜测,Observables的构造从未解决,这就是为什么没有警告,我等到时间结束。我天真的想法是,只要任何Observable会返回一个布尔值(如第7行所示),用户就会知道如何处理它。
我很高兴看到您的提示。去睡觉......
就是这样。我想我会坐下来看看完整的Observables教程。 – Matt
去吧。这是令人难以置信的,你可以用它们做什么。看看'rx弹珠'! – j2L4e