2

我知道这已经被多次解决(过去的大问题,但应该用 4.0 修复)并且 ngrx 示例应用程序也使用延迟加载,但init没有被多次调用。尽管如此,这个非常简单的设置(它使用了示例应用程序的许多组件)会导致 init 被调用两次,一次用于 the AppModule,一次用于延迟加载的Module1Module. Module2Module不是懒加载并且玩得很好。

最小的 repro repo或stackblitz repro

有没有人能够对这种行为有所启发?

编辑:在我正在开发的应用程序中,触发了这个问题,我注意到,随着每个新的初始化,整个动作历史似乎再次被调度。由于该应用程序尚未连接到 API,因此除了在控制台中之外,这不是很明显。如果这被连接到一个 API,那将意味着安静一些不必要的调用......

4

1 回答 1

1

我知道自从有人问这个问题以来已经有很长时间了,但是如果有人像我一样发现自己在这里:

在我们的例子中,我们使用 ngxs 并且 @@Init 被多次调用,因为我们有一个共享模块

imports: [
        NgxsModule.forRoot([
            MyState,
            MyState2
        ]

然后将该模块导入其他模块。

将 NgxsModul.forRoot(...) 声明移动到 ngxs 文档中指定的 app.module.ts 后,它可以正常工作。

于 2019-10-16T13:43:28.717 回答