AOT - 没有编译延迟加载的路由

时间:2017-03-15 06:39:49

标签: angular lazy-loading aot

有没有人知道为什么当我ngc我的项目时,项目中使用的延迟加载的模块没有被编译/生成? 这是延迟加载的路线:

children: [
    …
    {
        path: "my-apps",
        loadChildren: "carbonldp-panel/my-apps/my-apps.module#MyAppsModule",
    },
]

这是输出,没有生成my-apps.module.ngfactory.ts文件:

enter image description here

ONLY 生成它的方法是将其隐藏在路由文件中,但这不是延迟加载:

import { MyAppsModule } from "carbonldp-panel/my-apps/my-apps.module”;

1 个答案:

答案 0 :(得分:2)

Rollup需要一个入口点,并依赖于importexport语句进行树木抖动。

延迟加载会产生问题,因为它无法仅通过import/export语句进行跟踪。

它并不理想,但我建议为构建目的创建一个单独的条目文件,其中包括主应用程序和所有延迟加载的模块:

<强> entry.ts

import './main.ts';
import { MyAppsModule } from "carbonldp-panel/my-apps/my-apps.module";

<强> rollup.config.js

export default {
  entry: 'entry.js',
  ...
};

<强> [编辑]

我注意到您已将模块部署到node_modules文件夹,现在您正尝试在AOT版本中重新使用该模块。 如果它没有为您的模块生成必要的工厂文件,我会检查carbondIdp-panel模块以确保您的延迟加载模块的.metadata文件是作为构建的一部分生成的。 NGC需要元数据文件来生成工厂。

我希望这有帮助!