在我的 Angular 项目中,我有多个共享组件。我的相关文件夹结构是:
src
app
shared
components
_
...
confirmation (folder with the confirmation component)
notification (folder with the notification component)
...
index.ts
index.ts 包含不同共享组件的显式导出,例如:
export ...
export { ConfirmationComponent } from "./_/confirmation/confirmation.component";
export { NotificationComponent } from "./_/notification/notification.component";
export ...
如果在特定组件中同时使用共享组件
ConfirmationComponent
和
NotificationComponent
我以这种方式导入这两个组件:
import { ConfirmationComponent } from "../../../shared/components/_/confirmation/confirmation.component";
import { NotificationComponent } from "../../../shared/components/_/notification/notification.component";
...一切都很好并且工作正常。 但是,如果我这样做(由于index.ts,编译得很好):
import { ConfirmationComponent } from "../../../shared/components/_/confirmation/confirmation.component";
import { NotificationComponent } from "../../../shared/components";
...然后我进入了一个非常不同的(!)应用程序上下文(甚至不在这个特定组件的上下文中)错误:
ERROR TypeError: Cannot read properties of undefined (reading 'ɵcmp')
at getComponentDef (core.mjs:2529:12)
at extractDirectiveDef (core.mjs:2418:12)
at core.mjs:2592:21
at Array.map (<anonymous>)
at core.mjs:2592:10
at createTView (core.mjs:11394:63)
at getOrCreateComponentTView (core.mjs:11343:28)
at addComponentLogic (core.mjs:12096:19)
at instantiateAllDirectives (core.mjs:11898:9)
at createDirectivesInstances (core.mjs:11306:5)
我在这里缺少什么?这是为什么?
我花了相当多的时间才达到这一点,因为在“清理”应用程序结构、导入等过程中发生了错误。所以突然我遇到了这个错误。我不清楚是哪个特定的变化导致了它。
我终于找到理由了。它几乎没有循环依赖。有趣的是,它们以一种非常奇怪的方式表现出来。 跑步后:
npx madge --circular --extensions ts ./
我能够找到并解决它们。现在一切都好:).