【发布时间】:2019-12-24 14:09:07
【问题描述】:
我正在尝试根据条件引导我的 Angular 5 应用程序。基本上我有两个模块MobileModule和WebModule,分别包含web和mobile的UI组件。
如果用户在移动浏览器中打开了应用程序,我正在尝试引导MobileModule,否则WebModule。
这是我的main.ts 来源。
import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { environment } from './environments/environment';
import { AppSettings } from './app/core/app-settings';
import { MobileModule } from './app/mobile/mobile.module';
import { WebModule } from './app/web/web.module';
if (environment.production) {
enableProdMode();
}
/*
* Bootstrap mobile or web module based on mobile
* or desktop client.
*/
if (AppSettings.isMobileDevice) {
platformBrowserDynamic().bootstrapModule(MobileModule)
.catch(err => console.log(err));
} else {
platformBrowserDynamic().bootstrapModule(WebModule)
.catch(err => console.log(err));
}
web.module.ts
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppRoutingModule } from './app-routing/app-routing.module';
import { CoreModule } from '../core/core.module';
import { SharedModule } from '../shared/shared.module';
import { AuthModule } from './auth/auth.module';
import { SignupComponent } from './auth/signup/signup.component';
@NgModule({
imports: [
BrowserModule, // Support for common angular directives and services
AppRoutingModule, // Web routing controller module.
CoreModule, // Core modules
SharedModule, // Shared modules
AuthModule, // App authentication module (signup and login)
],
declarations: [],
providers: [],
bootstrap: [SignupComponent] // Bootstrap Signup component
})
export class WebModule { }
mobile.module.ts
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppRoutingModule } from './app-routing/app-routing.module';
import { CoreModule } from '../core/core.module';
import { SharedModule } from '../shared/shared.module';
import { AuthModule } from './auth/auth.module';
import { SignupComponent } from './auth/signup/signup.component';
@NgModule({
imports: [
BrowserModule, // Support for common angular directives and services
AppRoutingModule, // Mobile app routing controller module
CoreModule, // Core modules
SharedModule, // Shared modules
AuthModule, // App authentication module (signup and login)
],
declarations: [],
providers: [],
bootstrap: [SignupComponent] // Bootstrap Signup component
})
export class MobileModule { }
上述方法适用于ng serve,但是当我尝试使用ng serve --aot 选项运行它时,它在chrome 控制台中抛出错误。
Uncaught Error: No NgModule metadata found for 'WebModule'.
at NgModuleResolver.resolve (compiler.js:20242)
at CompileMetadataResolver.getNgModuleMetadata (compiler.js:15195)
at JitCompiler._loadModules (compiler.js:34405)
at JitCompiler._compileModuleAndComponents (compiler.js:34366)
at JitCompiler.compileModuleAsync (compiler.js:34260)
at CompilerImpl.compileModuleAsync (platform-browser-dynamic.js:239)
at PlatformRef.bootstrapModule (core.js:5567)
at eval (main.ts:26)
at Object../src/main.ts (main.bundle.js:53)
at __webpack_require__ (inline.bundle.js:55)
我的项目结构是
|-node_modules
|-src
|-app
|-core
|-mobile
|-mobile.module.ts
|-shared
|-web
|-web.module.ts
我尝试了几件事来有条件地引导应用程序,但没有成功。任何建议将不胜感激。
【问题讨论】:
-
请同时添加两个模块文件
-
@AnasBinNazeer 我已经更新了两个模块源。
-
你可以尝试升级 typescript 和 angular-cli 版本吗?
-
试过但没有成功。打字稿版本
^2.6.2和角度cli1.7.3
标签: angular typescript angular2-bootstrapping