ERROR @angularmaterialindex.d.ts'不是一个模块,来自'@angularmaterial'。

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

我使用 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';

成功的工作了。

请问我在第一段代码中遇到的问题会是什么原因?能否请您说明一下?

angularjs angular typescript
2个回答
0
投票

@angularmaterial改变了它的文件夹结构

起初 index.d.ts 所有模块都有导出语句,现在没有了。

在以前的版本中,你可以看到几个 d.ts 位置的文件 ..node_modules/@angular/material(即用于服务器模块),用来从各自的文件夹中导入模块(像这样) export * from './button/index';),我们只用导入这个文件

但是现在这些文件已经被移动到了各自的文件夹中(即按钮文件夹内)。因此,现在我们需要从各自的文件夹中导入以下文件


0
投票

你可以查看 这里的@angularmaterial 并看到根目录下没有模块,导致你的错误)。

这只是一个猜测,但根据你的错误,我假设他们把大的材料模块拆成了小的模块。

在你有一个 MaterialModule 其中包含了所有的内容。现在这个模块已经不存在了,取而代之的是很多专门的模块,如 MatInputModule, MatCardModule, MatButtonModule...

这样可以让编译器更好地进行代码分割,只保留必要的代码,从而使你的bundle更轻:)


0
投票

当导入你的mat模块时,可以试试这样做。app.module

import { MatInputModule, MatCardModule , MatButtonModule } from '@angular/material';

并请确保将模块添加到导入数组中的 app.module

imports: [
    MatInputModule,
    MatCardModule,
    MatButtonModule
  ],
© www.soinside.com 2019 - 2024. All rights reserved.