У меня есть класс провайдера с функцией запроса. Работает нормально:
sendRequest(requestBody:any,URL:string){
let headers = new Headers();
headers.append("Accept", 'application/json');
headers.append('Content-Type', 'application/json' );
let options = new RequestOptions({ headers: headers });
let body=requestBody;
body.key=this.key;
this.http.post(this.url+URL, body, options)
.subscribe(data => {
let json=JSON.parse(data['_body']);
let toast=this.toast.create({
message:json.response,
duration:3000,
position:'top'
});
toast.present();
return json;
}, error => {
console.log(error);// Error getting the data
});
}
Я хочу вызвать этот метод и получить ответ json в другом классе. Я пытался позвонить в обещании, но не получилось. Любая помощь будет принята с благодарностью.
Edit:
Я хочу выполнить toast так же, как пытался вернуть this.http.post ... он возвращает объект подписки. Как я могу получить данные JSON из этого?
** Правка № 2 **
Я успешно вернул данные, используя карту по определению и подписавшись на стороне вызова.
return this.http.post(this.url+URL, body, options)
.map((data) => {
let json=JSON.parse(data['_body']);
let toast=this.toast.create({
message:json.response,
duration:3000,
position:'top'
});
toast.present();
return json;
}
и вызывается с помощью
this.request.sendRequest(requestBody,'api/login').subscribe((data)=>{
console.log(data);
});
Тост тоже работает.
решаемые