我的 Angular 应用程序中遇到这种情况:我的 AppModule 带有多个导入的模块,当然包括 BrowserModule。 在我的应用程序的另一个模块中(我有一个管理路由的 AppRoutingModule,每个模块都有自己的模块),我想有条件地导入 BrowserModule,因为这个特定的模块可以是
正如您在下面的示例中看到的,我尝试根据 window.location.href 有条件地导入此模块(这样我可以检查哪个应用程序正在运行),但应用程序编译失败。有几个错误,它不再识别 NewRequestComponent 元素。
import {CommonModule} from '@angular/common';
import {NewRequestRoutingModule} from './new-request-routing.module';
import {NewRequestComponent} from './pages/new-request/new-request.component';
import {SharedModule} from '@app/shared';
import {BrowserModule} from '@angular/platform-browser';
import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
const isParcelComponent = !window.location.href.includes('/appric');
@NgModule({
declarations: [
NewRequestComponent,
],
imports: [
CommonModule,
isParcelComponent ? BrowserModule: [],
NewRequestRoutingModule,
SharedModule,
],
bootstrap: [NewRequestComponent],
})
export class NewRequestModule {}
这是一个错误示例
你知道为什么编译失败或者我怎样才能实现我的目标吗? 先谢谢你了
我明白为什么你认为不在简单组件中导入 browserModule 是个好主意,但在 Angular 中,我们需要在根模块(AppModule)中导入 browserModule,它提供了 Angular 启动和运行应用程序所需的基本功能。模块的组织方式是:
AppModule(根模块): 它应该只包含其他每个模块正常工作所需的基本导入,BrowserModule 就是其中之一。如果您有任何其他模块,它也应该包含在根模块中。
任何其他模块: 应仅包含其组件所需的依赖项,并且不能重新导入已在 AppModule 中导入的导入,因为它已在 AppModule 中导入并且已导入其依赖项
这不是一个好的实践,我什至不知道是否可以有条件地导入依赖项,如果您想要类似的东西,请使用模块的层次结构