2016-08-09 2 views

답변

2

을 사용하고

이 현재 유일하게 지원되는 동작입니다. 만들 계획이이 구성 https://github.com/angular/angular/issues/9811

매개 변수를 변경하고

export class MyComponent { 
    constructor(private route : ActivatedRoute, 
     private r : Router) {} 

    reloadWithNewId(id:number) { 
     this.r.navigateByUrl('my/' + id + '/view'); 
    } 

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

    paramsChanged(id) { 
     console.log(id); 
     // do stuff with id 

    } 
} 

이에 대한 답변에 대한 웹 검색의 약 2 시간 후도 How do I re-render a component manually?

+0

글쎄 실제로 스레드가 제안하는 동작이 내가 의도하는 동작의 반대입니다 .. 그러나 그들은 그것을 구성 할 수 있다면 모든 시나리오에서 작동 할 수 있습니다. – Mustafa

+0

어떻게 보느냐에 따라 달라집니다 ;-) 현재 기본 동작은 이전의'routerCanReuse() {return true; }',하지만 당신이 원하는 것은'routerCanReuse() {return false; }'. –

+0

정확히 .. 경로가 호출 될 때마다 실행되는 생성자가 필요하기 때문에. – Mustafa

1

보기가 초기화를 수행하는 방법은 구독 할 수 있습니다 라우터 문제, 내 솔루션은 라우터를 포기하고 그냥 내 구성 요소가 그 일을했다. 당신이 바로 PARAMS와 URL을 방문하여로드되는 것을 방지 할 수없는 경비가없는 경우

window.location.href = '/my/' + new_id_param + '/view';

또한 당신을 위해 일할 수 있습니다.

"모범 사례"가 아니지만 나에게 적합합니다.