我的应用程序分为几个模块:AppModule、CoreModule、RecordModule。
我的AppModule的导入是:
AppRoutingModule,
CoreModule,
RecordModule
所以,我的其他模块以及应用程序的路由。 CoreModule 的导入是:
CommonModule,
MatButtonModule,
MatIconModule,
MatOrientedNavModule,
MatSidenavModule,
MatTabsModule,
RouterModule
它包含
<router-outlet>
,因此是 RouterModule,它包含一个异步管道,这是 CommonModule 所必需的,并且它使用几个材料组件及其各自的模块导入。
MatOrientedNavModule 是来自库的自定义模块。它的进口是:
MatButtonModule,
MatRippleModule,
MatTabsModule
也只是一堆材料成分。最后,RecordModule包含以下导入:
RecordRoutingModule
所以,只是它自己的路由,然后将其导入到 AppModule 中。
现在,我有另一个自定义库模块,MatLoadingScreenModule,它具有以下导入:
BrowserAnimationsModule,
MatBackdropModule,
MatProgressSpinnerModule
如果我在 AppModule 或 CoreModule 中导入
MatLoadingScreenModule
并将其 <mat-loading-screen>
组件添加到相应的 HTML 模板中,它就会起作用,并且我可以看到我已经实现的加载屏幕。
但是,我必须在我的 RecordComponent 中使用它,但是如果我将它导入其中,我会收到运行时错误:
错误:来自
的提供程序已加载。如果您需要访问常见指令(例如 NgIf 和 NgFor),请导入BrowserModule
。CommonModule
很尴尬的是,没有模块导入 BrowserModule,但我猜它是 BrowserAnimationsModule 的一部分?我读过您应该只在 AppModule 中导入 BrowserAnimationsModule,但是为什么它在 CoreModule 中工作呢?我能看到的唯一区别是 CoreModule 的组件
wb-sidenav
直接添加到我的 AppComponent 的模板中,而 RecordComponents 是通过路由插入的。但话又说回来,我不明白为什么这会对模块导入产生任何影响。
这是怎么回事?我该如何解决这个问题?如何导入 MatLoadingScreenModule 以在我的 RecordModule 中使用它?
BrowserAnimationsModule
也在拉BrowserModule
。
您应该从此模块中删除该导入。
BrowserAnimationsModule
只能在根模块中导入。