2017-02-20 6 views
0

更新私のapiをres.status(401)の代わりにres.status(200)に修正すると、 。 私は401を返すので、未処理のエラーを推測していますが、私の.mapに.catchを追加するとbooleanエラーが発生した場合、どのようにして401を捕捉して使用できますか?未処理の約束エラーが発生するが、catchを追加するとbooleanが代入されない

私は認証ガードを作成しようとしています。私の方法は、サーバー側でいくつかの作業を行い、いくつかのユーザー情報と状態が真であるjson本体を返すAPIを要求することです。

私のコードでは

canActivate() { 
return this.http.get(`http://localhost:3000/api/user/status`, options) 
    // return this.http.get(`/api/user/status`, options) 
    .map(res => { 
    if(!res){ 
     this.router.navigate(['/login']); 
     return false; 
    } 
    let user: any = res.json(); 
    return true; 
    }) 
} 

正しいトークンでコードを実行すると、ページが認証されます。私がトークンを修正した場合、私のPOSTMANテストはstatus: falseを返すが、私のウェブサイトを使用するとエラーが発生し、処理できないエラーが発生する。

は、だから私はキャッチに

.catch(e => { 
    this.router.navigate(['/login']); 
     return false; 
    }) 

を追加しようが、私はタイプの引数」というコンパイルエラーを取得 『(E:任意の)=>ブール』 ERR(」タイプのパラメータに割り当て可能ではありません。任意の、Observable)=> ObservableInput '型' boolean 'は' ObservableInput '型に割り当てられません。) "

アドバイスはありますか?

答えて

0

私は

.catch(e => { 
    this.router.navigate(['/login']); 
     return false; 
    }) 

を使用していましたが、CanActivateで観察が

.catch(e => { 
    this.router.navigate(['/login']); 
     return Observable.of(false); 
    }) 
に渡すことができるブール値が必要です
関連する問題