2017-06-27 70 views
1

我必须通过一个主页为HomeComponent下面返回上一页时是否可以避免重新加载?

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

loadAll()查询数据库(我不会在这里发表的实现)加载所有项目。

ItemDetailComponent

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

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

第一次HomeComponent被加载时,它会查询数据库,这是好的。现在我做的动作是:

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

在1动作,它可以追溯到主页,但(再次查询数据库)重新加载一切。有谁知道我该如何避免这种情况?

+0

当您调用this.location.back()时,URL应该已被更改。你需要能够管理你的组件状态来决定它是否应该调用loadAll()或不。 – wannadream

回答

0

如果您不希望重新加载所有内容,则需要将this.loadAll()函数放置在除ngOnInit函数之外的其他位置(每次创建组件时都调用该函数)。然而,这可能没有多大意义。

另一种解决方案,其可以工作是调用HomePage部件的内部的ItemDetailPage分量和只显示ItemDetailPage部件根据的*ngIf

条件在HomePage.component.html:

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

这样HomePage组件永远不会结束并重新创建。

相关问题