无法绑定到“matMenuTriggerFor”,因为它不是“按钮”的已知属性

Posted

技术标签:

【中文标题】无法绑定到“matMenuTriggerFor”,因为它不是“按钮”的已知属性【英文标题】:Can't bind to 'matMenuTriggerFor' since it isn't a known property of 'button' 【发布时间】:2018-11-25 18:56:00 【问题描述】:

我在尝试测试角度组件时遇到以下错误:

运行笑话测试时出错:

Can't bind to 'matMenuTriggerFor' since it isn't a known property of 'button'.

这是我的html

<button mat-button [matMenuTriggerFor]="menu">Menu</button>
<mat-menu #menu="matMenu">
  <button mat-menu-item>Item 1</button>
  <button mat-menu-item>Item 2</button>
</mat-menu>`

我在 package.json 中使用 "@angular/material": "6.1.0",。 我还在TestBed 下的beforeAll 块中导入了所有必需的材料依赖项 我还尝试将按钮的属性从matMenuTriggerFor 更改为mat-menu-trigger-for。没用。

请建议我如何修复此测试。

【问题讨论】:

【参考方案1】:

在您的功能模块或该组件所在的模块中导入 MatMenuModule

 import  MatMenuModule from '@angular/material/menu';

imports: [
  MatMenuModule
]

【讨论】:

【参考方案2】:

我认为您需要将 MatMenuModule 导入添加到您的 app.module 文件中。

【讨论】:

【参考方案3】:

随机但万一有人像我一样搜索:我正在导入自定义角度材料库并在构建材料库之前构建消耗库。当我首先构建材料库时,消耗库即将看到 MatMenuModule 并且错误消失了。

我变了

"library:build": "npm run ng7-common:build" && npm run ng8-material:build

到:

"library:build": " npm run ng8-material:build && npm run ng7-common:build"

【讨论】:

【参考方案4】:

检查我在单词trigger 中有一个g 的拼写,这让我犯了这个错误

[matMenuTrigerData] => [matMenuTriggerData] 

【讨论】:

【参考方案5】:

我收到此错误(以及其他几个错误)是因为我未能将组件添加到 lib.module.ts 文件中的 declarations 数组中。

【讨论】:

【参考方案6】:

我在运行jest 测试时遇到此错误。我必须在TestBed.configureTestingModule 的导入数组中添加MatMenuModule 才能解决此错误。

【讨论】:

【参考方案7】:

如果在其他模块导入,则需要导出 MatMenuModule。

在你的模块中,放置:

... 出口:[MatMenuModule], ...

【讨论】:

以上是关于无法绑定到“matMenuTriggerFor”,因为它不是“按钮”的已知属性的主要内容,如果未能解决你的问题,请参考以下文章

无法将 [(ngModel)] 绑定到 Angular html

QML - 无法将组合框模型绑定到变体列表项

无法将文本绑定到 VueJS 模板中的 href 属性

无法将按钮绑定到 AVPlayer

无法将参数“消息”绑定到类型 ServiceBusReceivedMessage

无法绑定到“目标”,因为它不是“div”的已知属性