2016-10-26 2 views
2

リゾルバでチェックをしなければなりません。もし問題がなければ、オブジェクトを再割り当てします。そうでなければ、値falseのオブザーバブルを返します。ここでAngular2:リゾルバのオブジェクトを返します

が私のコードです:

resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { 
    return this.callApi().subscribe((result) => { 
     if (blabla === true) { 
      return Observable.of(result); 
     } 
     this.router.navigate([ '/' ]); 
     return Observable.of(false); 
    }); 
} 

Observable.of(偽)が動作しているようですが、私がホームページに行きますが、Observable.of(結果)で、私がで結果を得ることはありません私のコンポーネント...

は、あなたもswitchMapを必要としない

+0

あなたは '.subscribe()'に何を返すべきではありません。これは何をbtwすることになっていますか? – martin

+0

オブジェクトが無効になっているかどうかを確認しています。この場合、私はメッセージでホームページに行きます。 – GuillaumeC

+0

なぜObservableを '.subscribe()'に戻していますか? – martin

答えて

1

、あなたが可能な結果を​​持っているあなたの助けをいただき、ありがとうございます。 resultとfalseの両方をobservablesに変換しますが、それらを直接返すことができます。

return this.callApi().map(result => (blahblah ? result : false)); 

呼び出し側の内部副作用はベストプラクティスではありません、あなたは外でそれを処理することができます

resolve(...).filter(result => !result).subscribe(() => this.router.navigate([ '/' ])); 
関連する問題