使用ngFor kendo grid angular 2为特定列提供宽度和ng模板?

Posted

技术标签:

【中文标题】使用ngFor kendo grid angular 2为特定列提供宽度和ng模板?【英文标题】:Giving width and ng template for specific columns using ngFor kendo grid angular 2? 【发布时间】:2018-05-09 12:41:16 【问题描述】:

通常,当我为每一列使用单独的 kendo-grid-column 标记时,我可以轻松地为任何特定列提供 [width] 和 ng 模板 如何使用 ngFor kendo grid angular 2 为特定列提供宽度和 ng 模板?以https://www.telerik.com/kendo-angular-ui/components/grid/columns/的剑道文档为例

@Component(
  selector: 'my-app',
  template: `
      <kendo-grid
        [kendoGridBinding]="gridData"
        [filterable]="true"
        scrollable="none"
        >
        <kendo-grid-column
          *ngFor="let column of columns"
          field="column.field"
          title="column.title"
          format="column.format"
          filter="column.type"
        ></kendo-grid-column>
      </kendo-grid>
  `
)
export class AppComponent 
  public gridData: any[] = sampleProducts;

  public columns: ColumnSetting[] = [
    
      field: 'ProductName',
      title: 'Product Name',
      type: 'text'
    , 
      field: 'UnitPrice',
      format: '0:c',
      title: 'Unit Price',
      type: 'numeric'
    , 
      field: 'FirstOrderedOn',
      format: '0:d',
      title: 'First Ordered',
      type: 'date'
    
  ];

在上述生成列的方式中,我希望对某些特定列使用 ng 模板和宽度。如果我将它写在kendo-grid-column 标签内,它将适用于所有列,但我只希望它适用于特定列。我该怎么做?

【问题讨论】:

你试过 [width]="column.field === 'column_name' ? 'desired_width': 'default_witdth'" 【参考方案1】:

您也可以使用与其他属性相同的方法 - 只需在 columns 数组中的各个对象中提供宽度属性:

<kendo-grid-column
          *ngFor="let column of columns"
          field="column.field"
          title="column.title"
          format="column.format"
          filter="column.type"
          
        ></kendo-grid-column>

public columns: ColumnSetting[] = [
    
      field: 'ProductName',
      title: 'Product Name',
      type: 'text'
    , 
      field: 'UnitPrice',
      format: '0:c',
      title: 'Unit Price',
      type: 'numeric',
      width: 300
    , 
      field: 'FirstOrderedOn',
      format: '0:d',
      title: 'First Ordered',
      type: 'date'
    
  ];

UPDATED EXAMPLE

【讨论】:

如何提供 headerClass 之类的属性?我试过了还是不行 headerClass="column.customClass" (其中 customClass 是一个字符串)或 [headerClass]="column.customClass" 似乎都按预期工作:plnkr.co/edit/gtHYPdy0gpBJuP3uI0fR?p=preview 不要如果将在组件级别提供自定义样式,请忘记删除封装。 我会试一试,会告诉你的

以上是关于使用ngFor kendo grid angular 2为特定列提供宽度和ng模板?的主要内容,如果未能解决你的问题,请参考以下文章

在 ng-template 中使用 kendo-grid-column 的格式属性?

html [kendo] [web]使用Kendo Grid的自定义编辑器

Kendo UI Grid Angular (12)

text Kendo Grid使用数据服务

Kendo UI Grid Ajax 破坏成功

使用 *ngfor 时如何动态设置背景图像 URL [重复]