2017-06-27 11 views
1

私は前のページに戻るときに再読み込みを避けることはできますか?

ngOnInit() { 
    this.loadAll(); 
    this.registerChangeInItems(); 
} 

loadAll()、以下のようHomeComponentを持っているが、すべての項目をロードするために(私はここでの実装を投稿しません)HomeServiceを介してデータベースを照会します。 ItemDetailComponent

import {Location} from '@angular/common'; 

onGoBack() { 
    this.location.back(); 
} 

HomeComponentがロードされて初めて、それは大丈夫である、データベースを照会します。今、私はアクションは次のとおりです。

1) HomePage -> ItemDetailPage 
2) ItemDetailPage -> HomePage 

アクション2には、それがホーム・ページに戻りますが(再びクエリデータベース)のすべてを再ロードします。誰も私がこれを避ける方法を知っていますか?

+0

this.location.back();を呼び出すと、URLが変更されているはずです。コンポーネントの状態を管理して、loadAll()を呼び出す必要があるかどうかを判断できる必要があります。 – wannadream

答えて

0

すべてをリロードする必要がない場合は、ngOnInit関数(コンポーネントが作成されるたびに呼び出される)以外に、this.loadAll()関数を別の場所に配置する必要があります。しかしこれはおそらくあまり意味がありません。

<div *ngIf="some condition"> 
    <ItemDetailComponent></ItemDetailComponent> 
</div> 

動作できる別の解決策は、HomePageコンポーネントの内部ItemDetailPageコンポーネントを呼び出すだけHomePage.component.htmlにおいて*ngIf

の状態に応じItemDetailPageコンポーネントを表示することです

このようにして、HomePageコンポーネントは決して終了して再作成されません。

関連する問題