kendo组件封装模板/组件使用

时间:2017-01-03 21:59:22

标签: angular angular2-template kendo-ui-angular2 angular2-ngcontent

是否可以通过ng-content或TemplateRef或类似方式转换自定义列定义?我一直在通过站点(http://www.telerik.com/kendo-angular-ui/components/grid/)以及Angular2 child component as data提供的Kendo UI Grid plunker进行测试,但无济于事。我也尝试过ng-content select,但也没有。非常感谢任何帮助,谢谢!

@Component({
  selector: 'test-component',
  template: 
  `
    <kendo-grid [data]="Data">
    <kendo-grid-column></kendo-grid-column>
      // ??? // <ng-content kendo-grid-column></ng-content> // [object Object]
      // ??? // <kendo-grid-column ng-content></kendo-grid-column> // [object Object]
    </kendo-grid>
  `
})
export class TestComponent {
  @Input() Data: any;
}

@Component({
    selector: 'my-app',
    template: `
        <test-component [Data]="gridData">
          <kendo-grid-column field="ProductID" title="Product ID" width="120"></kendo-grid-column>
          <kendo-grid-column field="ProductName" title="Product Name"></kendo-grid-column>
          <kendo-grid-column field="UnitPrice" title="Unit Price" width="230"></kendo-grid-column>
          <kendo-grid-column field="Discontinued" width="120">
              <template kendoCellTemplate let-dataItem>
                  <input type="checkbox" [checked]="dataItem.Discontinued" disabled/>
              </template>
          </kendo-grid-column>
        </test-component>
    `
})
export class AppComponent { ... }

2 个答案:

答案 0 :(得分:2)

正如@rusev先前在评论中所回答的......这对我有用,谢谢!

  

GridComponent正在使用ContentChildren来选择已定义的列,   这与翻译不起作用。可能的解决方法 -   plnkr.co/edit/w6EgmZL5z8J6CvpjMl2h?p=preview

这就是在plunkr中可以看到的答案

import { Component, Input, ContentChildren, ViewChild, ChangeDetectorRef } from '@angular/core';
import { ColumnComponent, GridComponent } from '@progress/kendo-angular-grid';

const resolvedPromise = Promise.resolve(null); //fancy setTimeout

@Component({
  selector: 'test-component',
  template: 
  `
    <kendo-grid [data]="Data">
    </kendo-grid>
  `
})
export class TestComponent {
  @Input() Data: any[];

  @ContentChildren(ColumnComponent) columns;
  @ViewChild(GridComponent) grid;

  constructor(private cdr: ChangeDetectorRef ) {}
  ngAfterContentInit() {
    resolvedPromise.then(() => { 
      this.grid.columns.reset(this.columns.toArray());
    });
  }
}

@Component({
    selector: 'my-app',
    template: `
        <test-component [Data]="gridData">
            <kendo-grid-column field="ProductID" title="Product ID" width="120"></kendo-grid-column>
        </test-component>
    `
})
export class AppComponent { ... }

答案 1 :(得分:0)

要使用kendo-grid-column选择ng-content元素,请使用:

<ng-content select="kendo-grid-column"></ng-content>

请参阅this plunkr

相关问题