[英]How to pass response from service to component?
我有這項服務:
Login (body): Observable<Login[]> {
//let bodyString = JSON.stringify(body); // Stringify payload
var bodyString = 'email='+body.email +'&password='+body.password;
let headers = new Headers({ 'Content-Type': 'application/x-www-form-urlencoded'});
let options = new RequestOptions({ headers: headers }); // Create a request option
return this.http.post('/logiranje', bodyString, options) // ...using post request
.map(response => {return response}) // ...and calling .json() on the response to return data
.catch((error:any) => Observable.throw(error.json().error || 'Server error' )); //...errors if any
}
我有組件:
submitLogin(values){
var current = this;
// Variable to hold a reference of addComment/updateComment
let loginOperation:Observable<any>;
loginOperation = this.loginService.Login(values);
loginOperation.subscribe(
(response) => { console.log("Success Response" + response)},
function(error) { console.log("Error happened" + error)},
function(){
current.router.navigate(['/home']);
console.log("the subscription is completed");
}
);
}
我要檢查的是:
if(response.isLoggedIn){
current.router.navigate(['/home']);
}
但是我不知道如何將價值從服務傳遞到組件? 任何建議,我該怎么做?
您似乎希望您的響應是JSON。 然后,您應將其映射如下:
return this.http.post('/logiranje', bodyString, options)
.map(response => { response.json() })
.catch((error:any) => Observable.throw(error.json().error || 'Server error' ));
由於您已經將服務注入組件中,因此只需將響應分配給變量:
data : any;
constructor(private loginService : LoginService) {}
myFunction(body){
this.loginService.Login(body).subscribe(
res => { this.data = res },
err => { console.log(err) }
);
}
然后您可以使用data
變量
if(this.data.isLoggedIn){
current.router.navigate(['/home']);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.