Angular 9 中关于包导入范围的更改
What's changed in Angular 9 with respect to package import scope
我正在将大型 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
class.
我正在将大型 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
class.