带有@ngrx的可选路由器参数

时间:2017-03-12 14:05:12

标签: angular ngrx ngrx-effects

与ngrx / example-app类似,我正在构建一个界面,用户可以通过输入文本字符串来搜索某些内容。

我想使用可选参数(query=search_string)更新网址,以便当用户使用后退按钮返回搜索时,他们会返回已加载的相同搜索。 (我也会对他们所在的页面做同样的事情)

使用ngrx添加可选参数的适当方法是什么?

我的想法是把它放到BookEffects,因为我们不想在去抖时间之前更新路线。但由于某种原因,感觉不对......

[编辑] 为了进一步扩展,当用户导航回搜索页面时,需要以某种方式引导搜索。所以我的想法是修改FindBookPageComponent以包括:

constructor(..., private route: ActivatedRoute) {
  ...
}

ngOnInit() {
  let query = this.route.snapshot.params['query'];
  if (query) {
    this.store.dispatch(new book.SearchAction(query));
  }
}

由于debounce中的SearchAction导致搜索结果出现之前会出现不自然的延迟,因此仍然感觉很尴尬。 这是否意味着我们还应该创建单独的搜索操作:ImmediateSearchAction

1 个答案:

答案 0 :(得分:0)

ngrx中没有任何内容说明如何实现此操作,这取决于您。

您可以进行InstantSearchAction并在SearchAction效果中使用反跳功能将其转换为立即搜索。通过这样做,您可以轻松地重用现有的化简器,并仍然使操作按上下文分开。

我会做什么:

  • 创建新的UserInputSearchAction,(这是已去反跳的一个)
  • 创建新的UrlSearchAction,通过效果将其映射到SearchAction
  • 立即执行SearchAction

推荐阅读/视频: