繁体   English   中英

Angular 材料从版本 13 升级到 14 问题 - 错误 TS2307:找不到模块 '@angular/material/core/common-behaviors/constructor'

[英]Angular Material upgrade from version 13 to 14 issue - error TS2307: Cannot find module '@angular/material/core/common-behaviors/constructor'

在将 Angular 和 Angular 材料从版本 13.2.6 迁移到 14.2.2 期间,我遇到了以下问题:

错误 TS2307:找不到模块“@angular/material/core/common-behaviors/constructor”或其相应的类型声明。

错误 TS2345:“typeof MatInputBase”类型的参数不可分配给“_AbstractConstructor”类型的参数。 构造签名的类型不兼容。

这影响了使用ConstructorAbstractConstructor的每个文件。

我找到了类似的主题,但似乎只是错误消息相似,但没有任何建议对我有帮助。

通常,错误消息很清楚 - “找不到模块”意味着模块不存在:)

为了确定这是否属实,我去了node_modules文件夹,然后去了@angular/material/core/只是为了确认那里没有common-behaviors文件夹。 但是在核心模块内的index.t.ts文件中,我可以找到以下声明:

export declare type _Constructor<T> = new (...args: any[]) => T;

export declare type _AbstractConstructor<T = object> = abstract new (...args: any[]) => T;

这基本上意味着代码在重构期间被移出并且有些地方发生了变化。 为了解决我的问题,我只需将导入更改为正确的路径,从:

import { AbstractConstructor, Constructor } from '@angular/material/core/common-behaviors/constructor';

至:

import { _AbstractConstructor, _Constructor } from '@angular/material/core';

显然代码需要稍微调整一下,因为现在这些类的名称前面都带有_

简单,但不明显,尤其是Angular 迁移指南中没有提到它,也不是由升级脚本本身管理的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM