*mobxAutorun 使整个组件不被渲染

*mobxAutorun makes the whole component not being rendered

我一定是遗漏了一些明显的东西。如果我在 tags.component.html 的顶部添加 *mobxAutorun,则不会渲染整个组件。如果我删除它,它会呈现在页面底部,但反映到 commonStore.isLoadingTags 的代码未正确处理。

我关注了 mobx-angular, I event updated one of the samples to Angular 4+, but my simple change in the Realworld Angular 4+/Mobx repository 的所有内容,但仍然无法正常工作。感谢您的建议!

所以和explained by Adam一样,是因为如果使用SharedModule,你需要在SharedModule中导入MobxAngularModule,而不是AppModule,并且然后也将其导出,以便在整个应用程序中可用:

@NgModule({
  imports: [
    ...
    MobxAngularModule
  ],
  ...
  exports: [
    ...
    MobxAngularModule
  ]
})
export class SharedModule {}

TLDR:不要忘记导入 MobxAngularModule 以便在您使用 *mobxAutorun 指令的模块中访问它。

@NgModule({
    ...
    imports: [
        ...
        MobxAngularModule
    ]
})

我今天 运行 在我自己的代码中遇到了同样的问题,而不是在提到的示例中。 特定于提供的示例。如果有人遇到这个问题,您通常可以说 MobxAngularModule 需要在您使用的 module/component 中可用 *mobxAutorun。无论您是使用某种 SharedModule 在其中重新导出它还是直接在您使用该指令的模块中声明导入都没有关系。