2016-09-09 15 views
0

私は、ルートパラメータにかなりのテキストブックサブスクリプションを実装するコンポーネントを(以下に示すように)持っています。同じページの2つのコンポーネントからのルートパラメータへのアクセス

export class tutorialComponent implements OnInit, OnDestroy { 
    private sub: Subscription; 
    public chapter: string; 

    constructor(private route: ActivatedRoute) {} 

    ngOnInit() { 
    this.sub = this.route.params.subscribe(params => { 
     this.chapter = params['id']; 
    }); 
    } 

    ngOnDestroy() { 
    this.sub.unsubscribe(); 
    } 
} 

ただし、ルート上:私は、ブラウザからng.probe($0).componentInstanceを実行する場合(チュートリアルCMPを選択した)http://localhost:3000/tutorial/chapter/0、その後、私は章を参照してくださいすることができます=未定義 - なぜですか?

また、this.chapter = +params['id'];を使用した場合、章= NaN

更新:

私は2つのコンポーネント、親(チュートリアル)と子(章)コンポーネントを持っています。両方とも同じを持っている:

ngOnInit() { 
    this.sub = this.route.params.subscribe(params => { 
     this.chapter = params['id']; 
    }); 
    } 

しかし、子コンポーネントが正しくchapterを表示しますか?

答えて

0

ドキュメントあたりの提案方法はroute.snapshot使用することです:

this.validationCode = route.snapshot.params['id']; 

作業アプリからです...

+0

私はそれを更新したいと思います... –

+0

私は分かりませんか? –

+0

@JohnBaird - 彼はURLが動的であることを意味し、彼はオブザーバーが必要です – mrgoos

0

あなたはこのような数値にparams['id'];を変換する必要があります。

this.chapter = +params['id'];

+0

私は問題を解決しません文字列では、数値(つまり、あなたの解)として 'undefined'を取得します.' NaN' –

+0

これは、ルートパラメータ' id'に何も渡されないことを意味します。もしあなたがplnkrでいくつかのコードを共有できるなら、それは助けになるかもしれません。 – mrgoos

+0

そのため、子は機能し、親は機能しませんか?奇妙な。私はあなたに 'this.route.parent.params ... 'を試すように提案したかったので、すべての親からparamsを得ることができます。 – mrgoos

関連する問題