2016-10-11 5 views
0

Ang2 RC4 앱에서 작동중인 Im이 이상한 것을 알기 시작했습니다. 나는 내가 할 수있는 한 무리의 구성 요소 노선이 있습니다Angular2 구성 요소가 아무 이유없이 두 번 다시로드됩니다.

Parent(A) - ManyChildren(B,C,D,E) 

내 구성 요소 A가 ID를 가져옵니다을, 서비스에 회담 아이템을 얻을 상태를 업데이트합니다. 다른 구성 요소는 BehaviorSubjects로 "selectedItem"상태를 수신합니다.

path: ':id/steps', 

완전히 새로운 새로 고침 (새 창)으로 URL을 탐색하려고하면 예기치 않은 동작을 제외하면 모든 것이 작동합니다.

내 페이지를 완전히 다시로드하려고하면 (사용자가 페이지를 북마크에 추가하려는 경우) 올바른 페이지로 라우팅되고 모든 값이 올바르게 설정됩니다. 그러나 같은 트리로 이동하려고하면 구성 요소 A가 다시로드됩니다.

나는 생성자가 실행 부모

localhost/items/1/steps/step1 

에 갈 것입니다. 내가 갈 때

localhost/items/1/steps/step2 

상위 A 생성자가 다시 실행됩니다. 내 구성 요소가 한 번 정확하게로드 될 것으로 기대할 때 이것은 실제로 받아 들일 수 없습니다. 뭔가 빠졌습니까? (RC4)

+0

경로와 상기 구성 요소 코드를 추가하십시오. – Sefa

+0

angular2 릴리스 또는 알파/rc를 사용하고 있습니까? 라우터가 많이 바뀌었고 이전 버전 (현재 버전은 v3으로 알려짐)이 버그 였기 때문에. – bertrandg

+0

부모 A 생성자가 다시 실행 중임을 어떻게 알 수 있습니까? – sabithpocker

답변

0

이 동작의 이유를 모르겠습니다. 이상합니다. 그러나 문서 https://angular.io/docs/ts/latest/guide/lifecycle-hooks.html에서 말하는 것처럼 당신이 ngOnInit로 서비스 로직을 유지해야한다() 대신 생성자의 :

이 구성 요소 생성자에서 데이터를 가져 오지 마십시오. 새로운 구성 요소가 테스트 중에 만들거나 표시하기로 결정하기 전에 원격 서버에 연결하려고하므로 걱정할 필요가 없습니다. 생성자는 초기 로컬 변수를 단순한 값으로 설정하는 것 이상으로는 안됩니다.

귀하의 문제를 해결할 수 있을지 모르겠다. 시도해보고 알려주십시오.

+0

모든 기본 구성 요소에서 ngOnInit()으로 코드를 이동했는데 동일한 동작입니다. ngOnInit()가 경로에서 ID를 가져 오는 구성 요소에 대해 두 번 실행되었습니다. – ZeroCool

0

여기서 Why does my angular2 app initialize twice? 다른 사용자는 AppComponent를 기본 경로로 구성했기 때문에 동일한 동작을합니다. 어쩌면 당신의 문제는 이것과 비슷합니까? 우리는 귀하의 문제를 이해하고 해결할 수있는 정보가 거의 없습니다.

0

잠시 후 오류를 발견했습니다. RC4에 있었기 때문에 우리는 빌드 시스템을 구축 할 당시에 WebPack을 사용하여 게으른 로딩을 설정했습니다. 이유가 무엇 이건간에 그것은 다시로드를 일으키는 원인입니다.

 path: 'clients', 
     component: 'ClientsComponent', 
     //canActivate: [WebpackAsyncRoute], << THIS LINE // Async components with children routes must use WebpackAsyncRoute 
     children: [ 
관련 문제