angular - Angular:在 NgModule entryComponents 数组中使用库中的组件时出现问题
问题描述
我在同一个项目中有一个库和一个展示模块。
库模块有一个PopoverService和一个PopoverComponent。
PopoverService使用PopoverComponent作为 Angular CDK ComponentPortal 构造函数的第一个参数:
弹出服务:
open(...) {
new ComponentPortal(
PopoverComponent,
// ...
)
}
Showcase 模块直接使用PopoverService(但不是PopoverComponent)。
Lib 模块是这样的:
@NgModule({
declarations: [PopoverComponent],
imports: [
// ... other modules
OverlayModule
],
providers: [PopoverService],
exports: [PopoverComponent]
})
export class MyLibModule { }
public-api.ts是这样的:
export * from './lib/my-lib.module';
展示模块是这样的:
import { PopoverComponent } from 'my-lib/lib/components/popover/popover.component';
@NgModule({
// ... other
imports: [
// other modules
MyLibModule
],
entryComponents: [PopoverComponent]
})
export class ShowcaseModule { }
但是在调用 PopoverService.open() 时出现此错误:
./src/app/modules/showcase/showcase.module.ts
Module not found: Error: Can't resolve 'my-lib/lib/components/popover/popover.component' in '........./src/app/modules/showcase'
我究竟做错了什么?
解决方案
我错误地将 PopoverComponent 添加到了错误的模块中。不得不添加
entryComponents: [PopoverComponent]
在 Library 模块中而不是消费 Showcase 模块中。不过,由于@MikeOne 的宝贵建议,我不会删除这个问题。
推荐阅读
- python - _tkinter.TclError:无法连接以在绘图中显示“:0”
- timestamp - addHours,addMinutes 函数在 Azure 数据工厂中不起作用
- python - 未找到 在服务器上未找到请求的 URL。如果您手动输入了 URL,请检查您的拼写并重试。烧瓶
- c# - 怎么等到使用 selenium webdriver 重新加载部分?
- android - 如何更新 viewpager2 中附加到片段 onResume 上的片段的视图?
- java - Android JAVA:将 org.json.JSONArray 转换为 java.lang.String[]
- c++ - 当客户端断开连接时,如何使用 C++ 中的多线程服务器恢复到侦听状态?
- angular - 从Angular中的page2导航回来后如何保留page1的输入表单数据
- php - Google API 中的“其他联系人”能够在 PHP GooglePeople 中检索
- c# - 无法使用 DI 登录 AuthorizationFilter