2017-06-29 71 views
0

我有这个表删除检查从表行(S)在角

<p-dataTable [value]="example"> 
    <p-column [style]="{'width':'38px'}" selectionMode="multiple"></p-column> 
    <p-column field="a" header="column 1"></p-column> 
    <p-column field="b" header="column 2"></p-column> 
    <p-column field="c" header="column 3"></p-column> 
</p-dataTable> 

,我现在想要一个删除按钮应该从表中删除选中的行。

<button pButton type="button" label="Delete" (click)="onclick()"></button> 

我怎么会再继续,我知道我必须做的component.ts一个功能

onclick() 

而且我的表被创建为

example = []; 

ngOnInit() { 
    this.example.push({ 
     a: 'e1', 
     b: 'e2', 
     c: 'e3' 
    }); 
}; 

但是在做什么它删除选中的行。

由于

回答

3

首先改变示例阵列的结构,并允许制备选择阵列

example = [ 
    {field: 'a', header: 'e1'}, 
    {field: 'b', header: 'e2'}, 
    {field: 'c', header: 'e3'}, 
]; 

selectedItems = []; 


接着生成表和列这样(DRY)

<p-dataTable [value]="example" selectionMode="multiple" [(selection)]="selectedItems"> 
    <p-column *ngFor="let item of example" [field]="item.field" [header]="item.header"></p-column>   
</p-dataTable> 

<button (click)="deleteSelected()">Delete the bastards!</button> 


然后让我们使它们消失:

deleteSelected(){ 
    selectedItems.forEach(function(item) { 
     const index = example.indexOf(item); 

     example.splice(index, 1); 
    }); 
} 

而且应该这样做。

+0

谢谢,但可以在不进行选择阵列像你这样在我的代码,因为我做与.push的事情,因为我想多行的阵列和不想要不断创造新的阵列,只是为了创造更多的行来完成。 – sgman

+0

我可以问你从哪里获得阵列物品?如果你知道开始的项目**(e1,e2,e3)**,你应该使它们像我在** example **数组的定义中做的一样。然后,您可以使用** push **添加到该数组。你绝对需要**选择数组**,因为你需要跟踪你想要删除的数组。 – Mihailo

+0

创建表中不使用ngfor(HTML中的一部分),我只是使用pcolumn多次。那么我将如何获得数组的总索引/大小?我遇到的另一个问题是属性的例子不存在类型void这是什么意思。仍然感谢您的帮助。 – sgman