我使用 ng add @angular/material
然后我在app.module.ts文件中写了以下代码。
import {MatInputModule,MatCardModule,MatButtonModule} from'@angular/material';
然后我遇到了以下错误。ERROR in srcappapp.module.ts:14:8 - error TS2306: 文件 'D:DevelopAngularbrightway-appnode_modules@angularmaterialindex.d.ts' 不是一个模块。 14 } from '@angularmaterial';
我使用了以下代码来代替上述代码
import { MatInputModule } from "@angular/material/input";
import { MatCardModule } from '@angular/material/card';
import { MatButtonModule} from '@angular/material/button';
成功的工作了。
请问我在第一段代码中遇到的问题会是什么原因?能否请您说明一下?
@angularmaterial改变了它的文件夹结构
起初 index.d.ts
所有模块都有导出语句,现在没有了。
在以前的版本中,你可以看到几个 d.ts
位置的文件 ..node_modules/@angular/material
(即用于服务器模块),用来从各自的文件夹中导入模块(像这样) export * from './button/index';
),我们只用导入这个文件
但是现在这些文件已经被移动到了各自的文件夹中(即按钮文件夹内)。因此,现在我们需要从各自的文件夹中导入以下文件
你可以查看 这里的@angularmaterial 并看到根目录下没有模块,导致你的错误)。
这只是一个猜测,但根据你的错误,我假设他们把大的材料模块拆成了小的模块。
在你有一个 MaterialModule
其中包含了所有的内容。现在这个模块已经不存在了,取而代之的是很多专门的模块,如 MatInputModule
, MatCardModule
, MatButtonModule
...
这样可以让编译器更好地进行代码分割,只保留必要的代码,从而使你的bundle更轻:)
当导入你的mat模块时,可以试试这样做。app.module
import { MatInputModule, MatCardModule , MatButtonModule } from '@angular/material';
并请确保将模块添加到导入数组中的 app.module
imports: [
MatInputModule,
MatCardModule,
MatButtonModule
],