私は次のようなルートを持っています: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>
コンポーネント:
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
);
}
}
あなたはこのPlunkerに行けば、あなたはたびにルート変更を黒の四角形が点滅が表示されます。理想的には、黒い部分は元のままで、内部のデータだけが変更されます。
このちらつき現象は、私がHTTPコールを使用している場合にのみ発生することに気付きました。もし私がそのコンポーネントに他のものを持っていたら、ルートを変更するときにはこれは起こりません。
これを解決する方法はありますか?
EDIT:Here's a Plunkr予想される動作を示します。しかし、私は元のROUTER_DIRECTIVES
を使用していましたが、現在は廃止されています。
です。しかし、別の方法がないのだろうかと思います。私がもっと複雑な構造を持っていれば、同じ問題が残っています。ブラックボックスは残りますが、内部の他の静的な情報はまだちらつきます。私はまた、この動作がHTTPコールを使用している場合にのみ発生することに気付きました。もし私がそのコンポーネントに他のものを持っていたら、ルートを変更するときにちらつくことはありません。 – brians69
httpリクエストがサーバーから解決されるまで、ルートがロードされないため、解決ガードを使用すると、ちらつきが発生しません。 – Rob
私は何か間違っているのでしょうか?私はPlunkerを更新しました:http://plnkr.co/edit/8l2GwRzhcVKF4xUea55o?p=preview – brians69