没有路由器的角度延迟加载模块

Posted

技术标签:

【中文标题】没有路由器的角度延迟加载模块【英文标题】:Angular lazy loading module without router 【发布时间】:2019-04-03 13:06:15 【问题描述】:

是否可以从通过 npm 链接与其他模块链接的急切加载的“共享”模块中延迟加载模块?我收到此错误: ./src/$$_lazy_route_resource 惰性命名空间对象中的错误 找不到模块:错误:无法解析“C:project\core\src\$$_lazy_route_resource”中的“C:project/shared/src/lazy module/lazy.module.ngfactory.js”。

-project 
        - shared (linked) (eagerly loaded)
                - lazy module
        - core (link) (main app module)

这是我的 angular.json(位于核心) "lazyModules": ["../shared/src/lazy module/lazy.module"],

test.component.ts

constructor(public injector: Injector, private loader: NgModuleFactoryLoader)  

private moduleRef: NgModuleRef<any>;

load(): Promise<void> 
    if (this.moduleRef) 
        return Promise.resolve();
    

    const path = 'src/lazy-module/lazy.module#LazyModule';

    return this.loader
        .load(path)
        .then(moduleFactory => 
            this.moduleRef = moduleFactory.create(this.injector).instance;
            console.warn('moduleRef', this.moduleRef);
        )
        .catch(err => 
            console.error('error loading module', err);
        );


ngOnInit() 
    this.load();

【问题讨论】:

github.com/angular/angular/issues/18093 【参考方案1】:

不,目前不可能,请查看@ritaj 对 github 上现有功能请求的评论:https://github.com/angular/angular/issues/18093

【讨论】:

以上是关于没有路由器的角度延迟加载模块的主要内容,如果未能解决你的问题,请参考以下文章

延迟加载模块中的 Angular single-spa 延迟加载路由调用未定义的 webpack 错误

Angular 2 延迟加载技术

角度 5 延迟加载与动态加载

Angular 9 嵌套延迟加载模块,带有嵌套路由器出口

角度 5 中具有相同 URL 的两个不同组件(通过延迟加载在路由器中传递 slug)

具有路由参数和命名路由器出口的延迟加载模块