0

タイトルが説明するように、routerオブジェクトは、subscribeのメンバーの中で呼び出されると未定義になります。angle2ルータはサブスクライブ方式では定義されなくなる

export class AuthComponent implements OnInit { 
    password = ''; 
    email = ''; 

    constructor(
     private _router: Router, 
     private authService: AuthService 
) { } 


    sendLogin(): void { 
     this.authService.login(this.email, this.password) 
        .subscribe(function(token){ 
        console.log("Success Response" + token) 
        this.token = token 
        // TOKEN Here is good 
        // now I want to change my page, but 
        // _router -> undefined 
        this._router.navigate(['/dashboard']); 

        }, 
        error => console.log(error)); 
    } 

フォームを送信するときに呼び出されsendLogin()方法:

は、私はあなたにいくつかのコードをお見せしましょう。 フォームからのすべての可変文字が良好です。

プロセスは完全にsubscribe達したが、その後 this._router.navigate(['/dashboard']); は私に与える:

例外:未定義

任意のアイデアを 'ナビゲート' プロパティを読み取ることができませんか?

答えて

4

thisコンテキストを保存するには、矢印機能を使用する必要があります。

sendLogin(): void { 
     this.authService.login(this.email, this.password) 
        .subscribe(token => { 
        console.log("Success Response" + token) 
        this.token = token 
        // TOKEN Here is good 
        // now I want to change my page, but 
        // _router -> undefined 
        this._router.navigate(['/dashboard']); 

        }, 
        error => console.log(error)); 
    } 
+0

ああ、簡単! ありがとう! – F4Ke

+0

よろしくお願いいたします。 upvoteは非常に高く評価されるだろう。 –

+0

もちろん、検証の前に数分待たなければなりません – F4Ke

関連する問題