是否可以动态地将输出属性添加到角度2分量?

我正在创建自己的角度2模块,我称之为angular2-actionable-table

这个模块的目标是当我们想对某些数据做一些操作时提供一个通用表。 (例如:我们可以使用这个模块创建一个CRUD表)。

我从写一些简单的打字稿类开始。

export class Column{
  constructor(public name: string) {
  }
}

export class Action {
  constructor(public name: string) {
  }
}

和组件类。

import {Component, OnInit, Input} from '@angular/core';
import {Action} from "./models/action.model";
import {Column} from "./models/column.model";

@Component({
   selector: 'app-angular2-actionable-table',
   templateUrl: './angular2-actionable-table.component.html',
   styleUrls: ['./angular2-actionable-table.component.css']
})
export class Angular2ActionableTableComponent implements OnInit {

  @Input() columns: Column[];
  @Input() actions:Action[];

  constructor() { }

  ngOnInit() {

  }

}

所以这个模块的客户端可以做到这一点

<app-angular2-actionable-table [columns]="columns" [actions]="actions"></app-angular2-actionable-table>

我想在Angular2ActionableTableComponent中执行的操作是根据columns属性动态添加输出属性。 换句话说,假设客户端已经作为输入值传递了this columns = [new Action('edit'), new Action('validate')] 。 所以我想在Angular2ActionableTableComponent中做出类似于这个的东西

for(let i=0; i<this.columns.length; i++){
  @Output() Angular2ActionableTableComponent.prototype[this.columns[i].name];
  // The syntax is wrong for sure
}

然后,在向每个动作发布事件之后,客户端可以执行此操作

<app-angular2-actionable-table [columns]="columns" [actions]="actions"
    (edit)="onEdit($event)" (validate)="onValidate($event)">
</app-angular2-actionable-table>

我不确定这是否可以在Angular 2中使用Typescript。

链接地址: http://www.djcxy.com/p/40695.html

上一篇: Is it possible to dynamically add output properties to an angular 2 component?

下一篇: Angular 2 Keyboard Events