Я создаю сервис Angular2. Я использовал метод http.post, который возвращает EventEmmiter и в соответствии с документацией, которую я передал дальше, и возвращаю лямбды. https://angular.io/docs/js/latest/api/http/Http-class.htmlКак создать новый Observable, подписанный на Observable, возвращаемый методом http.post в angular2
следующий лямбда работает должным образом, но возврат лямбда вообще не называется.
Когда я пытаюсь вернуть this.user. Он равен нулю, поскольку пост-операция еще не завершена. Что я должен сделать, чтобы подождать, пока не вернется ответ auth.
И если я решил сделать реактивное программирование и хочу вернуть Rx.Observable в качестве возврата этого метода. Как я могу создать этот Rx.Observable, который будет подписаться на событие post postable complete post.
@Injectable()
export class LoginService {
http:Http;
headers:Headers;
user:User;
constructor(http: Http) {
this.http=http;
this.headers=new Headers();
this.headers.set('Content-Type','application/json');
this.user = new User();
}
authenticateUser(credential:Credential) {
credential.type = 'normal';
this.http.post('http://localhost:8000/api/v1/auth',
JSON.stringify(credential),
{
headers: this.headers
}
).observer({
next: (res) => {
if(res.json()._error_type){
console.log('Error Occured');
}
console.log(res.json());
this.user.authToken = res.json().auth_token;
},
return:() => {
console.log("Logged In");
return "LoggedIn Success"
}}
);
console.log(this.user);
return this.user;
}
}
export class User{
authToken:String;
}
export class Credential{
username:string;
password:string;
type:string;
}
Эй, это, кажется, фиксируется на alpha33 , см. [changelog] (https://github.com/angular/angular/blob/master/CHANGELOG.md) и [это] (https://github.com/angular/angular/commit/6fac9011) –
Я используя alpha33, однако я обнаружил как преобразовать один наблюдаемый в другой. Спасибо :) –