2017-03-15 4 views
0

Hy、ルートはページロード後初めて動作します

ページのロード後にルーティングが1回しか機能しない理由を教えていただけますか?

FE:

、ページの読み込み(作品) - >を選択してbook1(作品) - >(動作しない)他を選択

または

、ページの読み込み(作品) - >を選択しBOOK2(作品) - >を選択し(動作しない)他の

となど

my example

私は何を欠席しましたか?

他の提案も非常に便利です。

+0

あなたのルートは実際には動作していますが、コンポーネントは角度 –

+0

okeyで再利用されているので、どのファイルが問題になります私の問題は、あまりにも角度が新しく、実際には再利用が起こる場所が見えないので、再使用しないように修正してください。 – user7234965

+0

私はあなたに答えを投稿しました! –

答えて

0

あなたのサンプルを有効にするには、ルートパラメータが変更されたときにサブスクリプションを設定する必要があります。

これは、次の方法で行うことができます

ngOnInit(): void { 
    this.activatedRoute.params.subscribe((parms: any) => {    
     if (parms.laikID) { 
      this.atsakymas = this.books.getBook(parms.laikID); 
      this.ats = JSON.stringify(this.atsakymas); 
     } 
    }); 
} 

あなたの例で動作すること。しかし、あなたは、おそらくデータバインディングを使用するのではなく、ルートparamsのサブスクリプションを調べるべきです。

+0

。ありがとうございました。私もバインディングについて考えます。サブスクリプションの使用にバインディングとは対照的にいくつかの欠点があると私に教えてください。 – user7234965

+0

これは達成したいことによって異なります。また、ルータのリンクではなく、ボタンにイベントを表示することもできます。次に、(click)= "onClicked( 'laikID')"のような記述をして、コンポーネントメソッドへの呼び出しをトリガーします。 –

+0

実際に私はデスクトップ開発でデータベースを使用していますので、私はangular2に慣れていないのでサブライブラリを使用しています。ここでは、データベースの代わりに単純な配列を使用した例を示しました。 – user7234965

0

何がURLでのparamater以外

constructor(private http: HttpService,private activatedRoute:ActivatedRoute,private books:Books) { 
    this.activatedRoute.params.subscribe((params: any) => { 
     const laikID = params['laikID']; 

     console.log(laikID); 
    }); 
} 

が変化しないので、あなたのコンポーネントが再利用されているが、これは変更にあなたがルートを変更するたびにログコンソールますあなたのNaujaiGautiComponentに出て、上記のコードを試してみてください。

幸運を祈る!

+0

申し訳ありませんが、ここではchannelIdとは何ですか?それを得る方法? – user7234965

+0

@ user7234965申し訳ありませんコピーの貼り付けエラー私は自分の答えを編集しました –

+0

回答していただきありがとうございます。私は数字を記録するあなたの考えを理解していません。何を私に見つけてもらいたかったのですか?私は既にリンクをクリックするたびにその番号の変更が分かっていました。 – user7234965

0

私はお手伝いしたいと思いますが、あなたのコードはわかりにくいです。 2つのコンポーネントだけで簡単なプロジェクトを作成することをお勧めします。コンポーネント間をルーターで接続できるかどうかを確認してください。手動でナビゲートしないでください。メニューがあることを確認してください。一度それを取得すると、あなたは前進することができますまたはあなたは質問を再尋ねることができます

関連する問題