【发布时间】:2017-02-22 03:29:57
【问题描述】:
我有几个组件使用基本相同的表,因此我正在抽象出该表。我已经解决了大部分动态表填充需求,但还没有找到解决以下问题的方法。
在我的一个表格实例中,行需要是可点击的。在原始表中,我只是在行中添加了一个点击事件,并让它在我的打字稿文件中调用一个函数。
现在该表是任何消费组件的子代,我不确定如何动态添加此点击事件。这基本上是我想要实现的目标:
HTML:
<tr class="someClass" <!-- want click event here -->>
<td *ngFor="let column of row;"><div [innerHtml]="column"></div></td>
</tr>
这是表格的打字稿文件,所有数据都来自 visibleData 对象:
export class GenericTableComponent implements OnInit {
@Input() visibleData;
constructor() { }
ngOnInit() {
}
}
我在这里在我的父 HTML 中实现通用表
Parent HTML:
<oma-generic-table [visibleData]="visibleData"></oma-generic-table>
这是父级中准备数据的函数。我试图将点击事件存储在一个字符串中并传递它,但到目前为止我尝试的一切都失败了(与 {{}} 的数据绑定、方括号等)。
transformData(visibleData) {
const ret: any = {};
ret.headings = visibleData.headings;
ret.action = '(click)="rowClicked([row.id])"';
ret.checkbox = this.checkBox; //add if the table needs checkboxes
ret.content = [];
for (let i = 0; i < visibleData.content.length; i++) {
ret.content.push(_.values(_.omit(visibleData.content[i], 'id')));
}
return ret;
}
但是,即使硬编码到子项中,点击事件也无法识别父项中的函数,并且我收到以下错误:
EXCEPTION: Error in ./GenericTableComponent class GenericTableComponent - inline template:35:4 caused by: self.parentView.context.rowClicked is not a function
ORIGINAL EXCEPTION: self.parentView.context.rowClicked is not a function
我不确定这是否简单。我是 Angular 2 的新手,所以如果这个问题过于简单,我深表歉意。提前感谢您的帮助。
【问题讨论】:
标签: javascript html angular typescript event-handling