我已经“进入” Kendo网格后,如何从Angular 2组件访问某些内容

时间:2018-09-26 22:06:38

标签: angular kendo-ui components kendo-grid

因此,发生的事情是在网格中创建新行之后,需要访问组件中的其他信息。通常,我将使用“ this.method”或“ this.property”访问它们,但是,在创建新行之后,“ this”不再引用组件,而是引用网格。我有多种原因可以“脱离”网格并访问我的组件,但是却不知道如何操作。

@Component({
  selector: 'my',
  templateUrl: 
    <kendo-grid 
        id="myGrid" 
        [kendoGridBinding]="postingGridData" 
        [kendoGridTemplateEditing]="addNewPost" 
        (save)="saveHandler($event)"
        (remove)="removeHandler($event)">
            <ng-template kendoGridToolbarTemplate>enter code here
                <button kendoGridAddCommand id="addNewPost">Add new</button>
            </ng-template>
    </kendo-grid>
})
export class MyComponent{
    // random property to access
    public num: number;
    // create new grid row
    addNewPost(): void{
        let thisNumber = this.num;
        this.doThisMethod();
    }
    // another method on the component
    doThisMethod(): void{
        doSomething
    }
}`

2 个答案:

答案 0 :(得分:0)

您非常接近。您需要为Kendo网格定义 addHandler 。完成后,您将可以访问 doThisMethod 中的 this

我创建了一个Stackblitz Example。这是您的代码和CommandColumnComponent的Kendo文档的混搭。运行Stackblitz时,您将看到组件如何访问 doThisMethod 函数中的 this.num 属性。 This页也可以为您提供帮助。希望这会有所帮助。

答案 1 :(得分:0)

所以发生的事情是,当您在网格中具有[kendoGridTemplateEditing]时,它会自动为您自动处理添加/取消/删除/编辑功能,因此,在其中一个功能中,“ this”现在是指该指令。解决方法是将“ this”绑定到构造函数中的方法。

constructor() {
    this.addNewPost= this.addNewPost.bind(this);
}