6

以下は私のコンポーネントです。間違いの箇所はそのthis.router.navigate()部分です。ログイン後、ユーザーを別のページにリダイレクトしたい$state.go('dashboard').

import { Component } from '@angular/core';
import { Router } from '@angular/router';

import { AngularFire } from 'angularfire2';

@Component({
  templateUrl: 'app/auth/login.component.html'
})

export class LoginComponent {
  constructor(private af: AngularFire, private router: Router) { }
  onSubmit(formData) {
    if(formData.valid) {
      console.log(formData.value);
      this.af.auth.login({
        email: formData.value.email,
        password: formData.value.password
      }).then(function(success) {
        console.log(success);
        this.router.navigate(['/dashboard']);
      }).catch(function(err) {
        console.log(err);
        this.router.navigate(['/dashboard']);
      })
    }
  }
}

そして、私はこのエラーを受け取り続けます。教えてください、私は何が間違っていますか?

ここに画像の説明を入力

4

1 に答える 1

16

内部の&コールバックのArrow function代わりに使用する必要があります。コンポーネント(コンテキスト)を失っているコールバックの内部が原因です。function.thensuccesscatchsuccesscatchfunctionthis

コード

this.af.auth.login({
   email: formData.value.email,
   password: formData.value.password
}).then(
   //used Arrow function here
   (success)=> {
      console.log(success);
      this.router.navigate(['/dashboard']);
   }
).catch(
   //used Arrow function here
   (err)=> {
      console.log(err);
      this.router.navigate(['/dashboard']);
   }
)
于 2016-09-24T15:32:38.127 に答える