2017-06-21 12 views
3

私はangualr 2には新規です。そして、私は練習用の小さなアプリケーションを作っています。ログイン時にユーザーの認証サービスがあります。ここにはログイン機能があります。サブスクリプションが 'サブスクリプション'タイプではありません

login(email:string, password:string){ 

     var loginrul="https://filing.herokuapp.com/api/v1/auth/login/"; 
     return this.http.post(loginrul,JSON.stringify({ password: password,email: email }), 
      {headers:new Headers({'Content-Type':'application/json'})} 
      ).map(res=>res.json()). 
      subscribe(
       data => localStorage.setItem('id_token',data.auth_token), 
       error=>console.log(error) 
      ); 
    } 

私はコンポーネントangualrでこの関数を呼び出すプロパティは、型 『のサブスクリプション』に存在しないサブスクライブ」というエラーが発生します。

doLogin(event) { 
     console.log(event); 
     console.log(this.loginForm.value); 


     let formData = this.loginForm.value; 
     let email = this.loginForm.controls.email.value; 
     let password= this.loginForm.controls.password.value; 
     this.auth.login(email,password).subscribe(res =>{ 
      console.log(res); 
      if(res.status===200){ 
       this.router.navigate(['dashboard']); 
      } 
     } 
     ) 
    } 

私は私が購読使用していますので、なぜ角度は、このエラーを与えていると思いますログイン機能を呼び出す際にも、ログイン機能を呼び出す際にもご利用ください。ログイン機能で達成しようとしている結果を達成するために、解決策や代替方法を提案してください。

+2

私はdata => localStorage.setItem( 'id_token'、data.auth_token)をコンポーネントに移動すると、caller – Fals

答えて

6

問題の分析は正しいですか?.subscribeをサービス内で使用し、消費するコンポーネントでのみ使用してください。 .mapオペレータの後にサービスが返されます。

サービスに登録すると、Observableの代わりにSubscriptionが返されます。これが原因で実際​​にエラーが発生しています。

+0

に登録してauth_tokenを利用できるようになります。 –

+0

リクエスト内のデータから来たものであれば利用可能にする必要があります - はい –

関連する問題