2017-10-07 24 views
2

私はWebアプリケーションを持っています。私の右側のバーには私は3つの投稿があります。 私はポストをクリックすると、私はナビゲーションを持っている:Angular ngOnInit - リフレッシュが必要

this.router.navigate(['../post', this.post.id]); 

あり、ポスト・プロファイル・コンポーネントが引き継ぎます。 このコンポーネントには、指定されたIDを持つ投稿を取得するサービスから関数を呼び出す関数があります。今私は自分のコンテンツ領域(画面の左側)にその投稿のすべての詳細を表示します。この機能(自分の投稿を取得する)は、Post ProfileコンポーネントのngOnInitでのみ呼び出されます。

右側のサイドバーから別の投稿をクリックすると、URLの変更が表示されますが、投稿を取得する機能は呼び出されず、コンテンツ領域の投稿の詳細は変更されません。 私は今、私が望む投稿を見ることができるページをリフレッシュすると、すべてうまくいきます。

私はそれが役立つ場合、私の機能を購読しています。

私は問題を見ることができません。

これは私のPostProfileComponentあなたが観測ActivatedRouteparamsに加入してきたあなたのPOSTプロファイルコンポーネントのngOnInit法で

 constructor(postsService: PostsService, route: ActivatedRoute) { 
    this.postsService = postsService; 

    this.routeSubscription = route.params 
     .subscribe((params: any) => { 
      this.postId = params['id']; 
     }); 
} 

public getPostById(id: any): void { 
    this.postsService.getPostById(id) 
     .map((response: Post) => { 
      this.post = response; 
      console.log(this.post); 
     }) 
     .catch((error: any) => { 
      return error; 
     }) 
     .subscribe(); 
} 

ngOnInit(): void { 
    this.getPostById(this.postId); 
} 
+0

実際のコードを表示する必要があります。コードの外観は誰も推測できません。 [最小限で完全で検証可能なサンプルの作成方法](https://stackoverflow.com/help/mcve) – Alex

答えて

1

です。

subs1: Subscription; 
    constructor(private route: ActivatedRoute){} 

    ngOnInit() { 
    this.subs1 = this.route.params 
     .subscribe((params: Params) => { 
      const postId = params['id'] ? +params['id'] : ''; 
      if(postId){ 
       // call the function (that gets the post) 
      } 
     }); 
    } 
+0

OPのコードがこのように見えないことをどのように知っていますか?問題はどこにでもある可能性があるので、私はコードを尋ねました。たぶん、あなたは知っている、あなたの右のthoです。 – Alex

+0

彼はジェネリックソリューションを望んでいると思います。しかし、もし@Marianが私たちに実装されたコードを与えたら、私はそれに応じて答えを更新します。 – asmmahmud

+0

@マリアン、どうぞ。私のソリューションが正しければ、私の解決策を受け入れれば他の人にとっては役に立ちます。 – asmmahmud

関連する問題