Angular 4 Возврат данных из подписки - PullRequest
0 голосов
/ 04 июня 2018

Я изучаю угловой и практикую один проект.У меня есть 2 службы:

  • Веб-служба: для http-публикации в web api
  • Служба учетных записей: для входа в систему и т. Д.

сейчас я звонюв компоненте как Component.ts

onLoginTry(loginForm: NgForm){
this.accountService.loginUser(loginForm.value.email, loginForm.value.password);  
}

Обслуживание учетной записи

loginUser(Email: String, Password: String){

console.log("login try: "+Email+" "+Password);
this.webService.loginUser({Email: Email, Password: Password})
.subscribe(
  data=>{
    //console.log(data);
    console.log("SUBSCRIBE");
    return data;
  }
);
console.log("LOGIN ACCOUNT SERVICE");
}

Веб-сервис

loginUser(user: any){
const body = JSON.stringify(user);
const headers = new Headers();
headers.append('Content-Type', 'application/json');
return this.http.post('http://'+this.web_url+':'+this.web_port+'/api/User_login', body, {
  headers: headers
})
.map((data: Response) =>data.json());

 }

Проблема: Я хочу вернуть данные из loginUser в сервисе учетной записи компоненту, но когда я это сделаю, в журнале консоли возвращается неопределенное значение

Редактировать: Я получаю значение данных в функции сервиса аккаунтано я хочу отправить его компоненту.

1 Ответ

0 голосов
/ 04 июня 2018

Вы хотите получать данные с вашего сервера на ваш компонент, поэтому просто подпишитесь на него, например:

Component.ts

onLoginTry(loginForm: NgForm) {
    this.accountService.loginUser(loginForm.value.email, loginForm.value.password).subscribe(data => console.log(data));
}

AccountService.ts

loginUser(Email: string, Password: string): Observable<any> {
    return this.webService.loginUser({Email: Email, Password: Password});
}

Веб-сервис

loginUser(user: any): Observable<any> {
  const body = JSON.stringify(user);
  const headers = new Headers();
  headers.append('Content-Type', 'application/json');
  return this.http.post('http://'+this.web_url+':'+this.web_port+'/api/User_login', body, { headers }).map((data: Response) => data.json());
 }
...