2017-07-27 27 views
0

私は、ルーティングの変更にサブスクライブ:ルーティングの変更を聞くにはどうすればいいですか?

public ngOnInit() { 
    this.subscription = this.activateRoute.params.subscribe(params => { 
     this.language = params['id']; 
    }); 

    console.log(this.language); 
    } 

しかし、私はクリックリンクによって配線経路を変更したときに、私はconsole.log(this.language);を見ることはできません。表示されません。エラーはありません。

なぜですか?

+0

[Anger Observable/http/async呼び出しからの応答をどのように返すのですか?](https://stackoverflow.com/questions/43055706/how-do-i-return-the-response- from-an-observable-http-async-call-in-angular2) – echonax

+1

'params => {...} function'内で' console.log'を動かすだけです。 –

答えて

0

subscribeを購読「this.language」の値を印刷しなければならないので、非同期です。このthis.language = params['id'];文が呼び出される前にconsole.log()が呼び出されることがあります(非同期なので、その流れはわかりません)。

あなたはsubscribe内部機能にconsole.log(this.language);を置く必要があります。

this.subscription = this.activateRoute.params.subscribe(params => { 
    this.language = params['id']; 
    console.log(this.language); 
}); 

両方の文が同期しているので、これは、console.log(this.language);が右this.language = params['id'];後に呼び出されていることを確認します。

+0

私はそれがうまくいきませんでした – Daniel

+2

@Danielは 'console.log(params)'を試してみます 'params'変数に' id'プロパティもありますか? – echonax

+0

@DanielあなたのappModuleで、あなたのパスのURLを登録する場所を探してください: '/ {yourUri} /:id' ...' params ['id'] 'を取得するには、パスurlこの ':id'部分を持っているはずです – samAlvin

1

は、メソッドがobservable.Thisに送信されるメッセージにサブスクライブするために使用された購読ASYNC機能である、あなたは内部

public ngOnInit() { 
     this.subscription = this.activateRoute.params.subscribe(params => { 
      this.language = params['id']; 
      console.log(this.language); 
     }); 


     } 
+0

ルーティングに問題があるかもしれません:パスのURLはhttpです:// localhost:3000 /#/ language/en'と変更されました。 – Daniel

関連する問題