类型“ElementRef”不是通用的

Posted

技术标签:

【中文标题】类型“ElementRef”不是通用的【英文标题】:Type 'ElementRef' is not generic 【发布时间】:2018-09-28 16:36:17 【问题描述】:

我正在处理一个使用 Angular 5 中的 Material Component 的项目。我确实更新了我的 Visual 代码,但我不知道发生了什么。我面临一个问题“类型'ElementRef'不是通用的。” 从早上开始,我就一直被这个问题困扰。

这一行出错

_inputElement: ElementRef<htmlInputElement>;
constructor(toggleGroup: MatButtonToggleGroup, _changeDetectorRef: ChangeDetectorRef, _elementRef: ElementRef<HTMLInputElement>, _focusMonitor: FocusMonitor);

【问题讨论】:

你能发布你的完整代码吗?光看这个很难说是哪里出了问题 我在将 Angular Material 更新到 6.0.0-rc12 后也遇到了这个问题。删除了我的 node_modules 认为它​​会有所帮助但没有运气。我的错误在 node_modules/@angular/material/button-toggle/typings/button-toggle.d.ts 所以我无能为力,这非常令人沮丧。按钮切换是他们最近工作的东西,所以很有可能这是他们这边的一个新错误。如果您想使用 6.0,请尝试不同的 RC 或等待最终结果。 PS:他们不会在 ng-conf 发布最终的 v6,所以你仍然需要等待一段时间。 @Charl 我遇到了同样的问题。我也确实删除了 node_module 并将再次安装而不是解决问题。 感谢@bugs 已解决。实际上,问题是引导文件与材料冲突。我卸载所有软件包而不是重新安装。已解决 【参考方案1】:

我认为问题可能是如果您使用的是 Angular Material 6 但仍然使用 Angular 5,那么您将收到此错误。安装 Angular Material 6 RC 12 时,它正在寻找 Angular 6 Beta 0 的对等依赖项,而我有 Angular 5.x.x 版本。

解决方案:

    将 Angular 材质降级到与 Angular 相同的主要版本(例如 v5.x.x) 将 Angular 和 Material 升级到最新的 RC 版本,享受边缘生活。 (例如 v6.x.x RCx)

PS:他们在 ng-conf 2018 上宣布,从版本 6 开始,Angular、Angular Material 和 Angular CLI 的所有版本号都将保持同步,因此了解什么和兼容性会更容易,希望你能赢。不会再出现这个问题了。

【讨论】:

【参考方案2】:

我在 Angular 5 应用程序中的 ng-bootstrap 中遇到了与上述相同的错误。

错误 node_modules/@ng-bootstrap/ng-bootstrap/buttons/radio.d.ts(58,96): 错误 TS2315:类型“ElementRef”不是通用的。

我的package.json 中有 2.1.0 版本为"@ng-bootstrap/ng-bootstrap": "^2.1.0"

好像后面的版本支持2.1.0版本,所以决定将我的包ng-bootstrap降级为"@ng-bootstrap/ng-bootstrap": "^1.1.0"

然后,当我运行ng s 时,一切都按预期工作。

【讨论】:

像魅力一样工作!谢谢!

以上是关于类型“ElementRef”不是通用的的主要内容,如果未能解决你的问题,请参考以下文章

elemen-table表格数据转换-formatter属性

elementRef的宽度发生变化时如何更改模板

在 JDBC 中是不是有与二进制类型一起使用的通用类型?

angular 2 - 在 elementRef 上设置选择

angular 2 中 Renderer 和 ElementRef 的区别

打字稿:强制默认通用类型为“any”而不是“”