如何解决Angular 9 中关于包导入范围的变化
我正在将大型 V8 应用程序迁移到 V9,并且遇到使用 Material
组件的组件错误。我收到了 error NG8001: 'mat-icon' is not a kNown element
。我通过将 MatIconModule
的导入语句添加到包含组件定义的目录中的 *.module.ts
文件来解决该问题。我遇到的问题是在此目录上方的目录中还有另一个 *.module.ts
包含此导入语句,但 V9 在搜索导入语句时似乎忽略了该文件。例如:-
+ parent-dir
+ child-dir
component-dir
child-dir.module.ts
+ parent-dir.module.ts
在此示例中,我收到 component-dir
中组件的错误,因为 child-dir.module.ts
文件中缺少导入语句,即使它在 parent-dir.module.ts
文件中。当我将导入语句添加到 child-dir.module.ts
文件时,它解决了这个问题。
在 V8 中,import 语句的放置如上所述有效,但在 V9 中,它不再沿着目录层次结构查找 import 语句。
这是否在任何地方都有记录,因为我还没有找到它,这会在 V10、V11 和 V12 中继续以这种方式工作吗?我需要理解这一点,因为我的任务是将这个 V8 应用程序一直迁移到 V12。
解决方法
因为这种情况在使用旧的 ViewEngine
构建时有效,所以看起来旧的 ViewEngine
有一个问题,它会导出比应有的更多的模块。而 Ivy
只导出它被告知要导出的模块。这是对错误发生原因的简单解释。
解决方案是确保丢失的模块出现在相应 exports
类的 @NgModules
数组中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。