有没有办法在库中隔离 NGXS 存储?

Is there a way to isolate the NGXS store in a llibrary?

我们正在我们的应用程序 (=APP1) 中使用 NGXS 商店:

NgxsModule.forRoot()

现在我们将该应用程序的一部分分离到一个库组件/单独的 npm 包 (=LIB) 中。该组件还使用 NGXS 来处理其状态,它使用:

NgxsModule.forFeature()

初始化自己的自定义状态。

到目前为止一切顺利,但现在我们想将 LIB 包含到另一个不使用 NGXS 的应用程序 (=APP2) 中,因此不使用:

NgxsModule.forRoot()

问题是:如何在APP2中包含LIB而不需要APP2需要知道LIB中有NGX存储。对APP2应该是透明的。

在此先感谢您的帮助和想法!

您必须使用路标拆分您的图书馆。这是一篇很棒的文章,可以让您走上正确的道路:

https://medium.com/angular-in-depth/improve-spa-performance-by-splitting-your-angular-libraries-in-multiple-chunks-8c68103692d0

对于我的用例,我可以这样处理:

在库中我导出了两个模块:

@NgModule({
    imports: [NgxsModule.forFeature([...])
})
export class FeatureModule{}

@NgModule({
  imports: [
    FeatureModule,
    NgxsModule.forRoot()
  ]
})
export class RootModule {}

我们为其他用户记录了 RootModule,并通过我们的应用程序使用了 FeatureModule。