无法绑定到“ matRowDefColumns”,因为它不是“ mat-row”的已知属性

时间:2019-11-13 04:05:41

标签: angular angular-material angular-template

我正在测试使用mat-table的Angular 7组件,并且定义了一个模拟模块,该模块声明并输出模拟mat-row组件,如下所示:

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

模板中的用法是这样:

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

使用这种语法,我得到的错误是“无法绑定到'matRowDefColumns',因为它不是'mat-row'的已知属性。”

如果我不需要foo,可以这样写,可以正常工作:

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

有人知道我如何使用模板语法来使模拟工作吗?

作为一个旁注,很明显,我可以导入真实的东西,而不是导入模拟模块,但是显然,出于测试目的,我更喜欢模拟而不是完全集成。

1 个答案:

答案 0 :(得分:0)

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

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