как передать сервис данных в компоненты в угловых 5 - PullRequest
0 голосов
/ 02 мая 2018

Я запрашиваю у api данные в сервисе, но не знаю, как получить эти данные в компонентах? Я пытался Google, но не нашел никаких решений.

служебный файл

login(email:string, pwd:string):void{
  this.loginModule.verifyEmailLogin(email, pwd, (data)=>{
    console.log('user login data==>, ',data)
    return data;
  })
}

Здесь я получил данные в моей консоли

файл компоновки js

saveLoginForm() :void{
  //console.log(this.loginForm);
  console.log('Saved: ' + JSON.stringify(this.loginForm.value));
  this._userAuthService.login(this.loginForm.value.userEmail, this.loginForm.value.userPwd)

}

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Предполагая, что ваш loginModule.verifyEmailLogin возвращает наблюдаемое из вашего http-вызова

служебный файл

login(email:string, pwd:string): Observable<any>{
    return this.loginModule.verifyEmailLogin(email, pwd, (data))
}

componets file js

saveLoginForm() :void{
    this._userAuthService.login(this.loginForm.value.userEmail, this.loginForm.value.userPwd)
       .subscribe(
           (data) => console.log(data),
           (error) => console.log(error)
       )

  }
0 голосов
/ 02 мая 2018

Вы можете создать и вернуть Promise для разрешения данных в обратном вызове this.loginModule.verifyEmailLogin.

login(email:string, pwd:string): Promise<any>{
  return new Promise<any>(resolve => {
    this.loginModule.verifyEmailLogin(email, pwd, (data)=>{
      console.log('user login data==>, ',data)
      //return data;
      resolve(data);
    });
  });
}

Затем получите разрешенные данные в компоненте через Promise.then

this._userAuthService.login(this.loginForm.value.userEmail, this.loginForm.value.userPwd).then(data => {
  // deal anything with the data
})

Возврат Observable также решит проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...