【问题标题】:Error TS2315: Type 'ElementRef' is not generic material angular错误 TS2315:类型“ElementRef”不是通用材料角度
【发布时间】:2018-10-06 01:34:49
【问题描述】:

错误 node_modules/@angular/material/button-toggle/typings/button-toggle.d.ts(136,20):

错误 TS2315:类型“ElementRef”不是通用的。

node_modules/@angular/material/button-toggle/typings/button-toggle.d.ts(154,104):

错误 TS2315:类型“ElementRef”不是通用的

我正在尝试安装材料,但看起来这是个错误。

数据:

Angular CLI: 1.7.4
Node: 9.11.1

【问题讨论】:

  • a bug logged in github against @angular/material 正是为此。为了让我们帮助您,您应该向我们展示您的整个 package.json,尽管我怀疑我链接的错误中的响应会解决您的问题。仅供参考,您运行的节点版本在很大程度上与此类问题无关,因为包指定了它们可以运行的引擎版本。

标签: javascript angular angular-material


【解决方案1】:

这里最好的方法是更改​​所有材质依赖项以匹配 angular 对于那些拥有 angular 5.2.0 的人遵循此

首字母

"dependencies": {
  "@angular/core": "^5.2.0",
  "@angular/cdk": "^6.0.1",
  "@angular/material": "^6.0.1"    
}

只需将它们更改为其他角度组件的当前版本即可。

最终

"dependencies": {
  "@angular/core": "^5.2.0",
  "@angular/cdk": "^5.2.0",
  "@angular/material": "^5.2.0"    
}

那么npm install

【讨论】:

  • 它对我有用。谢谢@moze国王。你拯救了我的一天。 – karunakar bhogyari 刚刚编辑
  • 也为我工作。谢谢!!
【解决方案2】:

当您的所有角度包都在一个版本中,而材料包在另一个版本中时,就会发生这种情况。

当我的 Angular 包版本为 5.2 而材料版本为 6.0 时,我遇到了这个问题 所以我将材料版本改回 5.1 并修复了问题。

【讨论】:

    【解决方案3】:

    好的,这是我修复它的方法: 第一步:

    • 运行npm update -Dnpm update -S 但我认为这没有必要,因为问题仍然存在。

    步拖:

    npm install -g @angular/cli@latest
    ng update
    

    指挥部抱怨我需要跑(所以我就跑了):

    ng update @angular/cli
    

    尝试后:ng serve 由于未安装“hammerjs”,因此出现错误,因此我运行(但这可能不是您的情况):

    npm install hammerjs --save
    

    npm install @types/hammerjs --save-dev

    我不明白 --save-dev 的意义,但我是这样做的。现在正在编译。

    最后一个hammerjs的东西在这里找到: Module not found: Error: Can't resolve 'hammerjs'

    希望对您有所帮助。

    【讨论】:

    • 我也运行“npm install --save @angular/material @angular/cdk”,来自stackoverflow.com/questions/46885008/… 但我认为这是因为另一个问题。
    • 再说一遍,它有很多命令,但我发现这是更新其他所有内容而不需要降级的方式。
    【解决方案4】:

    我遇到了同样的问题,但将我的 @angular/material 降级到 5.0 版是可行的。 你可以试试看。

    【讨论】:

      【解决方案5】:

      当您的角度版本和材质版本不匹配时,会发生此错误。 要查看错误,请转到 package.json 文件,您可以在其中找到角度版本和材料版本。

        "dependencies": {
      "@angular/animations": "^5.2.0",
      "@angular/cdk": "^6.2.1",              //ERROR here the version is 6.x
      "@angular/common": "^5.2.0",
      "@angular/compiler": "^5.2.0",
      "@angular/core": "^5.2.0",
      "@angular/forms": "^5.2.0",
      "@angular/http": "^5.2.0",
      "@angular/material": "^6.2.1",         // ERROR here the material version is 6.x
      "@angular/platform-browser": "^5.2.0",
      "@angular/platform-browser-dynamic": "^5.2.0",
      "@angular/router": "^5.2.0",
      "core-js": "^2.4.1",
      "hammerjs": "^2.0.8",
      "rxjs": "^5.5.6",
      "zone.js": "^0.8.19"}
      

      },

      正如您在上面的 package.json 文件中看到的那样,版本不匹配。 有两种方法可以解决这个错误:

      1. 使用命令升级您的角度:ng update这会将您的角度版本更改为 6.x)。
      2. 将cdk和材料的版本手动更改为5.2.0然后输入命令:npm install 这将添加5.2.0版本的材料

      【讨论】:

        【解决方案6】:

        也许它与刚刚出现的 angular 1.6 有关?

        我有同样的问题,但不知道如何更新它的其余部分(而不是降级一件事,升级所有其他事情),但我想不通。

        尝试npm update -Dnpm update -S 但没有帮助。

        这个想法来自:I am new to angular. I just installed angular material and angular animations in my small project and got some of the errors

        【讨论】:

          猜你喜欢
          • 2018-10-12
          • 1970-01-01
          • 2018-11-19
          • 1970-01-01
          • 2018-09-28
          • 2018-09-29
          • 2018-06-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多