我正在测试使用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>
有人知道我如何使用模板语法来使模拟工作吗?
作为一个旁注,很明显,我可以导入真实的东西,而不是导入模拟模块,但是显然,出于测试目的,我更喜欢模拟而不是完全集成。
答案 0 :(得分:0)
答案是因为matRowDef
是一个结构指令,而不是要绑定的属性,所以必须创建并导入一个模拟结构指令:
@Directive({
selector: '[matRowDef]'
}) export class StubMatRowDefDirective {
@Input() matRowDefColumns: string[];
}