2017-06-29 86 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