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

Jos*_*oll 5 ngrx ngrx-effects angular

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

我想用可选的param(query=search_string)更新url,这样当用户使用后退按钮返回搜索时,它们将返回已加载的相同搜索.(我也会为他们所在的页面做同样的事情)

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

我想是BookEffects因为我们不想在去抖时间之前更新路线.但由于某种原因感觉不对......

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

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

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

这仍然觉得尴尬,因为之前的搜索结果显示,由于会有不自然的延迟debounceSearchAction. 那么,这是否意味着我们还应该创建一个单独的搜索行动:ImmediateSearchAction

MTJ*_*MTJ 0

ngrx 中没有任何内容说明您应该如何实现它,这取决于您。

您可以制作 ImmediateSearchAction 并在 SearchAction 效果中使用 debounce 将其转换为立即搜索。通过这样做,您可以轻松地重用现有的减速器,并且仍然保持按上下文分隔的操作。

我会做什么:

  • 创建新的 UserInputSearchAction,(这是去抖的)
  • 创建新的 UrlSearchAction,它通过效果映射到 SearchAction
  • 立即执行 SearchAction

推荐阅读/视频: