我创建了一个带有角cli的示例角6库
这给了我一个基本的结构,它有角度库“my”和示例应用程序“testing”,我认为它可以用于测试目的。
在库中,我想使用动态导入。我有一门课应该懒洋洋地引进:
export class Lazy {
print(): void {
console.log('I am lazy');
}
}我有我的消费组件:
export class MyLibComponent implements OnInit {
async ngOnInit() {
const lazyImport = await import(/* webpackChunkName: 'lazy' */ './lazy');
new lazyImport.Lazy().print();
}
}差不多就是这样。我使用"ng build my-lib“将库编译到dist文件夹。在tsconfig中,我将“模块”更改为esnext,以支持动态导入。
现在我想使用示例应用程序中的库,它是由cli生成的。因此,在app.module.ts内部,我导入库的模块,并在app.component.ts的模板中添加相应的选择器。
当我现在用"ng build“或以"ng serve”开头构建示例应用程序时,我可以看到没有生成“懒惰块”。它只是普通的主、多填充、运行时、样式和供应商。我遗漏了什么?在库中不能使用动态加载吗?
当我从已编译的app.module.ts文件夹中更改导入路径时
import { MyLibModule } from 'my-lib';到图书馆的源代码
import { MyLibModule } from '../../projects/my-lib/src/public_api';惰性块get已经创建,一切都如预期的那样工作。但这当然不是我想要的。我想在一个完全不同的项目中使用编译后的库,在这个项目中,我不能从类型记录源中导入。
编辑:我的问题总结
库本身能执行动态加载吗?这个特性是否只适用于主应用程序来延迟加载应用程序的其他部分或附加库?!
编辑:问题的原因
我的库由数百个生成的类型记录类组成。每个用例只需要几个。这些货物应按需装载。
谢谢你的帮忙!
斯蒂芬恩
发布于 2018-10-08 10:38:44
一切都如愿了。您只需构建库,将其放置在需要的地方,并在另一个项目中使用动态import方法,并使用相对路径引用构建的库。
reason没有构建一个块的原因是因为它会把源代码中没有引用的任何东西都抖掉。如果您的导入没有指向延迟块,则在应用程序上调用ng build或ng serve时,它看不到构建它的理由。但是ng build my-lib仍然将显式地构建模块。
https://stackoverflow.com/questions/52698903
复制相似问题