2017-09-17 6 views
2

アプリケーションは最初にjwtトークンをフェッチし、次にトークンを使用してポータル情報を収集する必要があります。このコードはリゾルバで書かれています。角度解決Rxjsは複数のAPIをマップしてサブスクライブします

このコードはエラー例外を作る:

タイプ「サブスクリプション」Observable<any>が除去されると「観察可能」

を型に代入ではなく、データを解決するには、コンポーネントでは利用できず、それが開始します解決前のコンポーネント

@Injectable() 
export class PortalLoadingResolverService implements Resolve<any> { 
    constructor(
     private authService:AuthService, 
     private emiDataService:EmiDataService, 
    ) { } 

    resolve():Observable<any> { 
     return this.authService.getJwtToken() 
     .map(res => res.json()) 
     .subscribe(JwtToken => { 
     debugger; 
     localStorage.setItem('id_token',JwtToken.token); 
     return this.emiDataService.getBasicLoadingDatas(); 
     }); 
    } 
} 

答えて

1

ここではObservableが返されません。それはTypescriptが叫んでいるものです。 Observableを超える購読方法を適用すると、それはSubscriptionを返すためです。 ObservableとswitchMap演算子を連鎖させることで簡単にObservableを返すことができます。

resolve():Observable<any> { 
    return this.authService.getJwtToken() 
    .map(res => res.json()) 
    .switchMap(JwtToken => { 
    localStorage.setItem('id_token',JwtToken.token); 
    return this.emiDataService.getBasicLoadingDatas(); 
    }); 
} 
+0

大変感謝しています。出来た。 –

関連する問題