无法在 app.module 中导入 MatDialogModule

cannot import MatDialogModule in app.module

我是 angular 的初学者, 我正在使用 angular material 对话框。首先我将 material 添加到我的项目中并从 @angular/material.

使用它

当我在 app.module.ts 中添加 ( import { MatDialogModule } from '@angular/material/dialog'; )) 时,编译项目出现以下错误

 ERROR in node_modules/@angular/cdk/coercion/array.d.ts(10,60): error
 TS1005: ',' expected.
 node_modules/@angular/cdk/coercion/array.d.ts(10,61): error TS1005:
 ',' expected. node_modules/@angular/cdk/coercion/array.d.ts(10,75):
 error TS1144: '{' or ';' expected.
 node_modules/@angular/cdk/coercion/array.d.ts(10,77): error TS1011: An
 element access expression should take an argument.

为什么?

这是我的 package.json:

      {
      "name": "sales-maret",
      "version": "0.0.0",
      "scripts": {
        "ng": "ng",
        "start": "ng serve",
        "build": "ng build",
        "test": "ng test",
        "lint": "ng lint",
        "e2e": "ng e2e"
      },
      "private": true,
      "dependencies": {
        "@angular/animations": "^7.2.16",
        "@angular/cdk": "^9.2.0",
        "@angular/common": "~7.2.0",
        "@angular/compiler": "~7.2.0",
        "@angular/core": "~7.2.0",
        "@angular/forms": "~7.2.0",
        "@angular/material": "^9.2.0",
        "@angular/platform-browser": "~7.2.0",
        "@angular/platform-browser-dynamic": "~7.2.0",
        "@angular/router": "~7.2.0",
        "core-js": "^2.5.4",
        "hammerjs": "^2.0.8",
        "material-icons": "^0.3.1",
        "rxjs": "~6.3.3",
        "tslib": "^1.9.0",
        "zone.js": "~0.8.26"
      },
      "devDependencies": {
        "@angular-devkit/build-angular": "~0.13.0",
        "@angular/cli": "~7.3.6",
        "@angular/compiler-cli": "~7.2.0",
        "@angular/language-service": "~7.2.0",
        "@types/node": "~8.9.4",
        "@types/jasmine": "~2.8.8",
        "@types/jasminewd2": "~2.0.3",
        "codelyzer": "~4.5.0",
        "jasmine-core": "~2.99.1",
        "jasmine-spec-reporter": "~4.2.1",
        "karma": "~4.0.0",
        "karma-chrome-launcher": "~2.2.0",
        "karma-coverage-istanbul-reporter": "~2.0.1",
        "karma-jasmine": "~1.1.2",
        "karma-jasmine-html-reporter": "^0.2.2",
        "protractor": "~5.4.0",
        "ts-node": "~7.0.0",
        "tslint": "~5.11.0",
        "typescript": "~3.2.2"
      }
    }

我相信当您重新安装 ng (Angular) 时应该可以解决这个问题

重新安装参考:

打开终端

sudo npm uninstall -g angular-cli
sudo npm cache clean

(记住 sudo 意味着对整个机器进行全局更改 - 推荐用于此过程)

为确保您的命令 运行 成功,请使用:

进行验证
ng -v

如果仍未安装,请按照以下步骤操作:

它将显示 ng 路径。转到路径,如果它是 linked 与任何文件删除相同的 link 和实际的 ng 文件。在我的例子中,link 在 /usr/bin/ng 中,ng 文件的实际路径是 /lib/node_modules/@angular/cli/bin/ng.

sudo rm -rf /lib/node_modules/@angular/cli/bin/ng
sudo rm -rf /usr/bin/ng

这应该删除所需的 npm 和 ng (Angular)。

要重新安装 ng,运行:

sudo npm install -g @angular/cli

让我知道这是否可行,否则您必须重新安装 npm,然后按照上述步骤操作。希望第一次尝试成功 ;)

错误是因为@angular/material、@angular/cdk和@angular/core包的版本号不匹配。包 @angular/material 和 @angular/cdk 的版本是 9.2.0 但 @angular/core 的版本是 7.2.0 .

要正常运行,三个包的版本应该相同。

您应该卸载@angular/material 和@angular/cdk 软件包,然后安装旧版本。

npm uninstall @angular/material
npm uninstall @angular/cdk
npm install @angular/material@7.2.0
npm install @angular/cdk@7.2.0

这对我有用

我在更正前有错误

node_modules/@angular/cdk/coercion/array.d.ts(10,60) 中的错误:错误 TS1005:预期为“,”。 node_modules/@angular/cdk/coercion/array.d.ts(10,61):错误 TS1005:预期为“,”。 node_modules/@angular/cdk/coercion/array.d.ts(10,75): 错误 TS1144: '{' 或 ';'预期的。 node_modules/@angular/cdk/coercion/array.d.ts(10,77):错误 TS1011:元素访问表达式应带参数。

我有不同版本的 material(9.x)、core(7x.x) 和 cdk(9.x)。

我在项目文件夹中 运行 并验证 package.json 在以下命令后都具有相同的版本 7.x 并且运行良好 npm 卸载@angular/material npm 卸载@angular/cdk npm 安装@angular/material@7.2.0 npm 安装@angular/cdk@7.2.0

改变

"@angular/cdk": "^9.2.0",
"@angular/material": "^9.2.0",

"@angular/cdk": "^7.2.0",
"@angular/material": "^7.2.0",