Angular:基于index.ts导入会导致:“ERROR TypeError:无法读取未定义的属性(读取'ɵcmp')”

问题描述 投票:0回答:1

在我的 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)

我在这里缺少什么?这是为什么?

我花了相当多的时间才达到这一点,因为在“清理”应用程序结构、导入等过程中发生了错误。所以突然我遇到了这个错误。我不清楚是哪个特定的变化导致了它。

angular importerror
1个回答
0
投票

我终于找到理由了。它几乎没有循环依赖。有趣的是,它们以一种非常奇怪的方式表现出来。 跑步后:

npx madge --circular --extensions ts ./

我能够找到并解决它们。现在一切都好:).

© www.soinside.com 2019 - 2024. All rights reserved.