angular - 无法绑定(bind)到 'matRowDefColumns',因为它不是 'mat-row' 的已知属性

标签 angular angular-material angular-template

我正在测试一个使用 mat-table 的 Angular 7 组件,我已经定义了一个 mock 模块,它声明并导出一个 mock mat-row 组件:

@Component({selector: 'mat-row', template: ''}) export class StubMatRowComponent {
  @Input() public matRowDefColumns: string[];
}

模板中的用法是这样的:

<mat-row *matRowDef="let foo; columns: displayedColumns;"></mat-row>

使用此语法,我得到的错误是“无法绑定(bind)到‘matRowDefColumns’,因为它不是‘mat-row’的已知属性。”

如果我不需要foo,我可以这样写,这会起作用:

<mat-row matRowDef="displayedColumns"></mat-row>

有谁知道如何使用模板语法让模拟工作?

作为旁注,很明显,除了导入我的模拟模块之外,我还可以导入真实的模块,但同样明显的是,出于测试目的,我更喜欢模拟而不是完全集成。

最佳答案

答案是因为 matRowDef 是一个结构指令,而不是要绑定(bind)的属性,所以必须创建并导入模拟结构指令:

@Directive({
  selector: '[matRowDef]'
}) export class StubMatRowDefDirective {
  @Input() matRowDefColumns: string[];
}

关于angular - 无法绑定(bind)到 'matRowDefColumns',因为它不是 'mat-row' 的已知属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58830187/

相关文章:

Angular 8 : Make FormBuilder Accept Numbers Only with Range for Latitude and Longitude

javascript - 你能阻止 Angular 组件的主机点击被触发吗?

heroku - Heroku 上的 Angular CLI 部署

javascript - 在 Angular 2 的单元测试中模拟基类

javascript - Angularjs 验证不适用于复制粘贴

带有 Angular Material 声明的 Angular 编译警告

具有嵌套 promise 和可观察性的 Angular 解析

angular - 如何创建组合来自两个不同功能模块的数据的 NGRX 选择器?

angular 4 可重用组件和模板

javascript - AngularJS - 预加载模板不适用于指令