다음과 같은 경로가 있습니다 : page/:id
, 여기에는 id
에 대해 다른 콘텐츠가로드됩니다. 그러나 다른 페이지로 갈 때마다 전체 콘텐츠가 다시로드됩니다. API에서 오는 데이터 만 다시로드하고 싶습니다.경로 변경시 전체 콘텐츠 다시로드 중지
탐색 :
는<ul>
<li [routerLink]="['/page', 1]">Page 1</li>
<li [routerLink]="['/page', 2]">Page 2</li>
<li [routerLink]="['/page', 3]">Page 3</li>
</ul>
템플릿 : 는 <h1 *ngIf="data">{{data.name}}</h1>
구성 요소 :이 Plunker에 가면
export class DataComponent implements OnInit {
data: any;
error: any;
constructor(
private route: ActivatedRoute,
private service: DataService
) {}
ngOnInit() {
this.getData();
}
getData() {
this.service.getData()
.subscribe(
res => this.data = res,
error => this.error = error
);
}
}
, 당신은 검은 색 사각형을 볼 때마다 깜박 경로 변경 . 이상적으로 검은 부분은 그대로 유지되며 내부의 데이터 만 변경됩니다.
이 깜박임 동작은 HTTP 호출을 사용하는 경우에만 발생합니다. 그 구성 요소에 다른 것들이 있다면 라우트를 변경할 때 이런 일은 일어나지 않을 것입니다.
해결 방법에 대한 아이디어가 있으십니까?
EDIT : Here's a Plunkr 예상대로 동작합니다. 그러나 나는 이전의 ROUTER_DIRECTIVES
을 사용하고 있었는데, 지금은 더 이상 사용되지 않습니다.
나는 본다. 그러나 다른 방법이 없는지 궁금합니다. 좀 더 복잡한 구조를 가지고 있다면 여전히 블랙 박스가 남아 있지만 내부의 다른 정적 인 정보는 여전히 깜박일 것입니다. 나는 또한 HTTP 호출을 사용하는 경우에만이 문제가 발생하는 것으로 나타났습니다. 그 구성 요소에 다른 것들이 있으면 라우트를 변경할 때 깜박이지 않습니다. – brians69
http 요청이 서버에서 해결 될 때까지 라우트가로드되지 않으므로 resolve guard를 사용하면 깜박 거리지 않아야합니다. – Rob
어쩌면 내가 뭔가 잘못하고있는 걸까요? 내 Plunker를 업데이트했습니다 : http://plnkr.co/edit/8l2GwRzhcVKF4xUea55o?p=preview – brians69