无法绑定到 'matRowDefColumns',因为它不是 'mat-row' 的已知 属性
Can't bind to 'matRowDefColumns' since it isn't a known property of 'mat-row'
我正在测试一个使用 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>
使用这种语法,我得到的错误是 "Can't bind to 'matRowDefColumns' since it isn't a known property of 'mat-row'."
如果我不需要foo
,我可以这样写,这样就可以了:
<mat-row matRowDef="displayedColumns"></mat-row>
有谁知道如何使用模板语法让模拟工作?
附带说明一下,显然,除了导入我的模拟模块之外,我还可以导入真实的模块,但同样明显的是,出于测试目的,我更喜欢模拟而不是完全集成。
答案是因为matRowDef
是一个结构指令,而不是属性要绑定的,所以必须创建并导入模拟结构指令:
@Directive({
selector: '[matRowDef]'
}) export class StubMatRowDefDirective {
@Input() matRowDefColumns: string[];
}
我正在测试一个使用 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>
使用这种语法,我得到的错误是 "Can't bind to 'matRowDefColumns' since it isn't a known property of 'mat-row'."
如果我不需要foo
,我可以这样写,这样就可以了:
<mat-row matRowDef="displayedColumns"></mat-row>
有谁知道如何使用模板语法让模拟工作?
附带说明一下,显然,除了导入我的模拟模块之外,我还可以导入真实的模块,但同样明显的是,出于测试目的,我更喜欢模拟而不是完全集成。
答案是因为matRowDef
是一个结构指令,而不是属性要绑定的,所以必须创建并导入模拟结构指令:
@Directive({
selector: '[matRowDef]'
}) export class StubMatRowDefDirective {
@Input() matRowDefColumns: string[];
}