有条件地引导角度6模块

时间:2019-06-28 06:52:13

标签: angular typescript angular6 angular-cli angular2-aot

我的用例如下:

我有两个模块,分别是 A B A 处理所有客户端交互,而 B 处理单点登录服务中的令牌更新,并在后台使用iFrame进行。 根据当前URL,我需要有条件地引导模块 A B 。这意味着在任何给定时间点,两个模块中只有一个可以在应用程序中使用。 我这样做是因为我将在 A的 根组件中拥有iFrame,该iFrame将加载模块 B B 始终在iFrame的后台运行。

我的main.ts文件看起来像这样。

import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { A } from './app/app.module';
import { B } from './app/modules/b/b.module';
import { environment } from './environments/environment';

if (environment.production) {
  enableProdMode();
}
if (!location.href.includes('b2b/auth')) {
  platformBrowserDynamic().bootstrapModule(A)
    .catch(err => console.log(err));
} else {
  platformBrowserDynamic().bootstrapModule(B)
  .catch(err => console.log(err));
}

问题是,上面的代码仅在ng build的开发环境中就可以正常工作,但是一旦我使用ng build --prod构建产品,它就可以成功编译,但是在运行时会抛出:

uncaught error in function() {} No NgModule metadata found for 'function (){}'. 然后执行到此为止 我也得到:

WARNING in Lazy routes discovery is not enabled. Because there is neither an entryModule nor a statically analyzable bootstrap code in the main file. 无论是开发人员还是产品构建。

我看到很多人都遇到了这个问题,我想知道是否有人能够解决这个问题。

ng build throws an error: “Tried to find bootstrap code- but could not.”

Multiple entryModule support

https://github.com/angular/angular-cli/issues/4624

bug: No NgModule metadata found for 'function(){}'. Magical optimization for aot

No NgModule metadata found for 'function (){}'

但是没有任何建议的运气。 我知道我过分简化了我的问题陈述,但是这样做是为了清楚地了解我的用例和面临的问题。

感谢您的帮助。谢谢

0 个答案:

没有答案