Angular 5:防止在参数更改时重新加载组件

时间:2018-06-05 19:17:32

标签: javascript angular angular5 angular-routing

我有一条路线/search,里面有两个组件;一个是带结果的搜索框,另一个是应该在每个页面上的新闻源,与搜索无关。如果我执行搜索,并将参数附加到网址,则结果将显示在我的搜索框下方,但在重新初始化页面/组件时,新闻源也会重新初始化,必须再次获取相同的数据(这是一个很长的时间)运行任务)。

如何更新网址以反映一个组件的状态更改,而不重新呈现页面上的其他组件?

angularjs曾经有reloadOnSearch: false可以解决这个问题,虽然是以一种草率的方式

编辑:最好是将返回的结果存储在服务中,然后更改路由,从服务中再次获取最后的结果?如果是这样,将如何做?

修改cgTag已关联。可以使用指定的插座。我没有看到任何内容代替插座的位置

APP-routing.module.ts

const routes: Routes = [
  { path: 'search', component: SearchComponent },
  { path: 'view', component: ClientNewsFeedComponent, outlet: 'client-news-feed' }
]; 

search.component.html

<div>
  <cc-search-client-field></cc-search-client-field>
  <router-outlet name="client-news-feed"></router-outlet>
</div>

然后浏览到网址/search(client-news-feed:view),路由器插座不会呈现任何内容

编辑:知道了。路由应该是

path: 'search', component: SearchComponent, children: [
  { path: 'view', component: ClientNewsFeedComponent, outlet: 'client-news-feed' }
]

和url应该有一个/

/搜索/(客户新闻馈送:视图)

1 个答案:

答案 0 :(得分:1)

您可能希望使用路线的outlet功能。

https://angular.io/guide/router#displaying-multiple-routes-in-named-outlets

这使您可以在不更改当前路线的情况下渲染辅助路线。然后,您将使用辅助路径显示搜索结果。