如何不绑定ViewModel直接在模板中设置ngx-datatable的columnMode等属性
解决方案
有三种常用的实现方式,都不需要额外声明属性存储列模式值:
- 直接使用非绑定语法赋值(最简便)
去掉columnMode属性外层的方括号,直接传入字符串即可:
不带方括号的属性会直接传递字符串字面量,<ngx-datatable #table class="material" [columns]="columns" [headerHeight]="50" [footerHeight]="50" rowHeight="auto" [limit]="10" [rows]="testService.tests$ |async" columnMode="force" [selected]="selected" > </ngx-datatable>ngx-datatable内部兼容枚举值对应的字符串输入,同时这种写法不会触发Angular模板类型校验,不会抛出类型不匹配错误。 - 使用
$any绕开类型检查
如果必须使用方括号绑定语法(比如后续要动态切换列模式),可以用Angular内置的$any方法临时跳过类型校验:[columnMode]="$any('force')" - 在组件类暴露枚举供模板直接引用(推荐,保留类型校验)
只需要在组件类里把ColumnMode枚举暴露为公共成员,不需要额外声明属性存储具体值,即可在模板中直接引用枚举字段,还能保留完整的类型提示和校验能力:
组件ts代码:
模板代码:import { ColumnMode } from '@swimlane/ngx-datatable'; @Component({ // 组件原有配置 }) export class YourComponent { // 仅需添加这一行暴露枚举即可 readonly ColumnMode = ColumnMode; }[columnMode]="ColumnMode.force"
内容的提问来源于stack exchange,提问作者J4N
相关产品推荐
相关产品推荐

