如何在不绑定到 ViewModel 的情况下设置 ngx-datatable 的 columnMode/...

How to set columnMode/... of a ngx-datatable without binding to ViewModel?

我开始使用 ngx-datatable

我目前有这个:

            <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>

但是 angular 对 columnMode 不太满意:Type '"force"' is not assignable to type 'ColumnMode'.

我一直在检查 ngx-datatable 的例子,它们实际上似乎绑定到 ColumnMode.force

我看到我可以在我的组件 viewModel( import { ColumnMode } from '@swimlane/ngx-datatable';) 中导入它,但这意味着在这里声明一个 属性 只是为了能够绑定到 ngx-datatable。

有没有办法直接在模板中引用或指定columnMode?

您可以为您的 <ngx-datatable> 元素应用 columnMode="force"

<ngx-datatable 
  columnMode="force"
  ...
>
</ngx-datatable>

Sample Demo on StackBlitz


1.0 根据ngx-datatable DataTableComponent (Line 186):

@Input() columnMode: ColumnMode | keyof typeof ColumnMode = ColumnMode.standard;

string 值传递 columnMode 是可以接受的。

枚举上keyoftypeof的详细解释,可参考


2.0 根据Angular - Property Binding docs,

The brackets, [], cause Angular to evaluate the right-hand side of the assignment as a dynamic expression. Without the brackets, Angular treats the right-hand side as a string literal and sets the property to that static value.