如何将预编译Angular库加载为动态模块?Angular13+适配方案求助
Angular 13+ 动态加载插件库的可行方案求助
我负责的应用基于包含多个应用与库的Angular工作区,要求库作为插件动态加载——编译时无法确定插件集合,因此不能使用静态机制。
Angular 13 之前的可行方案
Angular 13 之前,我们通过以下流程实现动态插件加载:
- 使用默认的
ng-packagr编译库 - 通过SystemJS在运行时加载UMD包
- 调用Angular编译器的
compiler.compileModuleAndAllComponentsAsync方法编译Angular模块
但Angular移除直接UMD包支持后,该方案不再可行。
当前方案的问题
我们目前采用了一种在浏览器中运行babel的替代方案,但该方案速度极慢,无法满足需求。
尝试过的无效方案
我们希望为插件库构建预打包版本,但尝试后均未成功:
- 回退到JIT编译,体验不理想
- 按照相关issue建议使用Angular Linker,但即便传入相同的
Injector,生成的库仍无法正确解析服务,持续出现常见的“No provider for service”错误
请问有人成功实现过这类动态加载插件库的配置吗?
内容的提问来源于stack exchange,提问作者Hanno Bunjes
相关产品推荐
相关产品推荐

