2017-01-16 10 views

답변

20

당신은 ActivatedRoute을 주입하고 params

constructor(route:ActivatedRoute) { 
    route.params.subscribe(val => { 
    // put the code from `ngOnInit` here 
    }); 
} 

라우터 만 파괴하고 다른 경로로 이동할 때 구성 요소를 재현 구독 할 수 있습니다. 경로 매개 변수 또는 쿼리 매개 변수 만 업데이트되었지만 경로가 동일하면 구성 요소가 파괴되고 다시 작성되지 않습니다.

강제로 구성 요소를 다시 작성하는 또 다른 방법은 사용자 지정 재사용 전략을 사용하는 것입니다. 또한 Angular2 router 2.0.0 not reloading components when same url loaded with different parameters?를 참조 인스턴스가 생성 될 때 한 번 호출됩니다

+1

Thx, 좋은 해결책. 그리고 나는 깨끗하다고 ​​생각한다. – AntiCZ

1

NgOnInit (그것을 구현하는 방법을 아직 사용할 수 많은 정보를 수없는 것 같다). 동일한 인스턴스의 경우 NgOnInit은 다시 호출되지 않습니다. 그것을 호출하기 위해서는 생성 된 인스턴스를 파괴 할 필요가 있습니다.

0

ngOnInit에있는 코드를 ngAfterViewInit으로 옮기는 것이 좋습니다. 후자는 라우터 탐색에 호출 된 것으로 보이며이 경우에 도움이됩니다.

+1

그것은 실제로 일어나지 않습니다. – nadav

6

라우터에서 reuseStrategy를 조정할 수 있습니다.

constructor(private router: Router) { 
    // override the route reuse strategy 
    this.router.routeReuseStrategy.shouldReuseRoute = function() { 
     return false; 
    }; 
}