2番目の観測可能な関数で1番目の観測値の出力が必要な角度2で観測可能なチェーン2をパラメータとして使用します。2番目の観測可能な値が2番目の値であるとき、angular2の観測値を2つに連鎖する方法
私はこのように観察を作成しました:
storeData(response: any): Observable<any> {
return Observable.create((observer) => {
// storing the data in localstorage
this.storage.ready().then(() => {
this.storage.set('USERACCESSTOKEN', response.token).then(() => {
this.storage.set('USERROLE', response.user_role).then(() => {
delete response.token;
this.storage.set('USERDATA', response).then(() => {
this.setLoggedIn(true);
observer.complete();
})
})
})
})
});
}
私はこのように私のログインページで使用したい:otpVerify
からここ
login(form: any, event: Event): void {
this.authService.otpVerify(form)
.switchMap((data) => this.authService.storeData(data))
.subscribe(response => {
if(this.navCntrl.canGoBack())
this.navCntrl.pop();
else
this.navCntrl.setRoot('TabsPage');
}, (err)=>{
console.log("your credentials doesn't match");
});
}
、私のような応答を取得しますその:
{
"success" : true,
"message" : "Login success",
"token" : "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJod…n19fQ.EMMT6wJeoF7Y52c3UQzgw3rkTY0WduGYq...........",
"name" : "Jony",
"user_role" : "editor"
}
ここで正しい資格情報の確認が完了したら、user_roleもチェックしたいと思います。 user_roleがレスポンスの(エディタまたはサブスクライバ)と一致する場合は、switchMap((data) => this.authService.storeData(data))
ブロックに移動します。それ以外の場合は、というロールが表示されます。ダイアログボックス&も格納されていません。 [私はこれをどのように行うのかわからないので、この論理を追加していない。しかし、これは私が探しているものです]。 AuthService
で
otpVerify
機能はそのようなものです:
otpVerify(body: any): Observable<any> {
let headers = new Headers();
headers.append('Content-Type', 'application/json');
this.options = new RequestOptions({ headers: headers });
return this.http.post(AppSettings.API_ENDPOINT2 + 'login', body, this.options)
.map(response => response.json())
.catch(this._errorHandler);
}
このOTP検証した後、私はそれが有効なユーザーであるかないことを確認するためにも条件を載せていきたいと思います。すべてがうまくいけばデータを保存し、そうでなければエラーメッセージを表示します。これを解決するために私を助けてください。
'login'メソッドを変更して、正しく動作させたいのですが? –
はい@AdrienBrunelat –
現在のコードの何が間違っていますか?私は自分の角度の環境を設定していないし、あなただけの頭であなたを支援する必要があります。 –