私は特定のルートを保護するGuardを持っています。 canActive
メソッドでは、2つのhttp要求を作成する必要があります。最初の応答に基づいて2つ目のHTTP要求がトリガーされます。しかし、2番目のリクエストは決して行われず、Observablesを返すネストされたコンストラクタに関するものと仮定します。Angular2:Guardのネストされたオブザーバブル
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()が正しく機能すると想定することがあります。 getA()は、Guardが呼び出されたときにネットワーク経由で正常に送信されますが、getB()は送信されません。デバッガはライン5
もう一つには静かに出て、活字体はおそらく既に私に解決策を伝える警告が、しかし、私はあまりそれをどのように処理するかを知るために、特に観測とNoobのだ示しています
Observable<Observable<boolean>>' is not assignable
to type 'Observable<boolean>'
Observablesの構成は決して解決しないため、警告が表示されず、時間の終了まで待っています。私の素朴な考え方は、Observableが(7行目で行ったように)ブール値を返す限り、加入者はそれをどのように扱うかを知っているということでした。
あなたのヒントをお読みいただきありがとうございます。ベッドにオフ...
それです。私は座ってObservablesの完全なチュートリアルのために行くと思います。 – Matt
それを行ってください。あなたがそれらでできることは信じられないほどです。 「rx marbles」をチェックしてください! – j2L4e