Angular 扩展状态时,如何实现共享选择器的共享操作? 问题

Angular 扩展状态时,如何实现共享选择器的共享操作? 问题,angular,ngxs,Angular,Ngxs,当使用NGXS继承状态时,文档中有一个很好的共享选择器的技术。它非常有用,因为它意味着所有子状态的选择器只定义一次 我想在行动上采取同样的方法,但我想不出来。我如何才能做到这一点,从而不必为每个继承状态创建一组具体的操作 迄今为止的想法 NGXS gitbook展示了如何使用继承的选择器: 我尝试查看了ngxs实体插件,发现了一个名为generateActionObject()的函数: 这似乎是一种正确的方法,但我无法看穿迷雾,弄清楚我需要采取的第一步是什么 我的背景 我正在Angular中

当使用NGXS继承状态时,文档中有一个很好的共享选择器的技术。它非常有用,因为它意味着所有子状态的选择器只定义一次

我想在行动上采取同样的方法,但我想不出来。我如何才能做到这一点,从而不必为每个继承状态创建一组具体的操作

迄今为止的想法 NGXS gitbook展示了如何使用继承的选择器:

我尝试查看了
ngxs实体
插件,发现了一个名为
generateActionObject()
的函数:

这似乎是一种正确的方法,但我无法看穿迷雾,弄清楚我需要采取的第一步是什么

我的背景 我正在Angular中实现一个通用的
ListingModule
,它定义了一个基本状态类
ListingState
。它包含标准内容,如当前页面、每页行数、排序选项等

将使用泛型列表模块的子模块都需要一个单独的存储切片来包含它们的状态

一个粗略的例子:

ListingChildStateA
{ 
  numberOfRows, 
  currentPage 
} 

ListingChildStateB
{ 
  numberOfRows, 
  currentPage 
} 

ListingChildStateC
{ 
  numberOfRows, 
  currentPage 
} 
我知道这是一个很好的状态继承使用场景。根据NGXS文档的共享选择器,我已经完成了一半

例子 我需要实现这样的东西

@Dispatch()
function setPage() {
   new generateAction(SetPage, 'ListingChildStateA');
}


class BaseListingState {
...
@Action(SetPage)
setPage(ctx: StateContext<BaseListingState>) {
  ...
}

@Dispatch()
函数setPage(){
新一代操作(设置页面“ListingChildStateA”);
}
类BaseListingState{
...
@动作(设置页)
setPage(ctx:StateContext){
...
}
因此,以这种方式调度操作意味着存储区中名为
ListingChildStateA
的片段将被更改,而其他片段都不会发生变异

我知道这是错误的,但我正试图用它来描述我的意图。我确信一定有一种方法可以使操作更通用、更可共享,因为
ngxs实体
插件正在做类似的事情

@Dispatch()
function setPage() {
   new generateAction(SetPage, 'ListingChildStateA');
}


class BaseListingState {
...
@Action(SetPage)
setPage(ctx: StateContext<BaseListingState>) {
  ...
}

接下来呢? 有谁能帮助我如何最好地使用共享选择器和操作的状态继承


谢谢。

这取决于“共享行动”是什么意思,因为没有“共享行动”的概念我试图遵循NGXS gitbook中列出的术语。但我的意思是能够创建一组操作,这些操作可以根据继承的子状态键在存储的正确部分进行操作。将更新问题以提高清晰度。让我们稍微远离
@Dispatch
,它只是一个插件。共享actions和Selector是不同的方法。您不能为3个状态创建一个通用操作,因为您必须在3个子状态中创建3个操作处理程序。这些操作处理程序应该侦听不同的操作,就像您有3个操作处理程序侦听同一个操作一样-当该操作被分派时,它们都将被调用anks Shadow。是的,这很有道理。我希望找到一种方法在一些高阶函数中生成独特的动作。另外,你可以在我们官方的NGXS slack频道中问这个问题,你会在那里得到更多答案:)这取决于你所说的“共享动作”是什么意思,因为没有“共享动作”的概念我试图遵循NGXS gitbook中列出的术语。但我的意思是能够创建一组操作,这些操作可以根据继承的子状态键在存储的正确部分进行操作。将更新问题以提高清晰度。让我们稍微远离
@Dispatch
,它只是一个插件。共享actions和Selector是不同的方法。您不能为3个状态创建一个通用操作,因为您必须在3个子状态中创建3个操作处理程序。这些操作处理程序应该侦听不同的操作,就像您有3个操作处理程序侦听同一个操作一样-当该操作被分派时,它们都将被调用anks Shadow。是的,这很有道理。我希望找到一种方法,在一些高阶函数中生成独特的动作。另外,你可以在我们的官方NGXS slack频道中问这个问题,你会在那里得到更多答案:)