2017-10-07 6 views
2

웹 응용 프로그램이 있습니다. 오른쪽 옆구리에는 3 개의 게시물이 있습니다.각도 ngOnInit - 새로 고침 필요

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

게시물 프로파일 구성 요소가 이상 걸릴 것입니다 : 난 후 클릭, 내가 탐색이있다. 이 구성 요소에는 지정된 id로 내 게시물을 가져 오는 서비스에서 함수를 호출하는 함수가 있습니다. 이제 내 콘텐츠 영역 (화면의 왼쪽 부분)에 해당 게시물의 모든 세부 정보가 표시됩니다. 내 게시물을 가져 오는이 함수는 게시물 프로필 구성 요소의 ngOnInit에서만 호출됩니다.

오른쪽 사이드 바에서 다른 게시물을 클릭하면 URL의 변경 사항을 볼 수 있지만 내 게시물을 가져 오는 기능은 호출되지 않으며 내 콘텐츠 영역의 게시물 세부 정보는 변경되지 않습니다. 지금 내가 원하는 게시물을 볼 수있는 페이지를 새로 고치면 모든 것이 잘 작동합니다.

필자는 필자의 기능에 대해 도움이된다면 가입해야합니다.

문제가 표시되지 않습니다.

이 당신이 ActivatedRouteparams 관찰 가능한에 가입했습니다 당신의 포스트 프로필 구성 요소의 ngOnInit 방법에 내 PostProfileComponent

 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 코드가 어떻게 보이지 않는지 어떻게 알 수 있습니까? 문제는 어디에서나 발생할 수 있으므로 코드를 요청했습니다. 어쩌면 당신은 맞습니다. – Alex

+0

나는 그가 일반 솔루션을 원한다고 생각한다. 그러나 @Marian이 구현 된 코드 중 일부를 제공하면 이에 따라 응답을 업데이트 할 것입니다. – asmmahmud

+0

@Marian, 여러분 안녕하세요. 내 솔루션이 제대로 작동한다면 내 솔루션을 정답으로 받아들이면 다른 사람들에게 도움이 될 것입니다. – asmmahmud