dataTable Primeng 和 Angular 4 中的 Selected Item 找到索引 -1
Selected Item in dataTable Primeng and Angular 4 find index -1
大家好,我想 select 删除和编辑项目,我不使用 Primeng 的 CRUD 数据表,我使用 ng-template 和列
所以我的代码是这样的
<p-dataTable [value]="users" selectionMode="single" [(selection)]="selectedUser" (onRowSelect)="onRowSelect($event)" [paginator]="true" rows="15" [responsive]="true">
<p-column field="nom" header="Nom" [sortable]="true"></p-column>
<p-column field="email" header="Email" [sortable]="true"></p-column>
<p-column field="brand" header="Modfier" [sortable]="true">
<ng-template let-col let-user="rowData" pTemplate="body">
<button type="button" pButton (click)="editUser(user)" tooltipPosition="top" icon="fa fa-pencil"></button>
</ng-template>
</p-column>
<p-column field="color" header="Supprimer" [sortable]="true">
<ng-template let-col let-user="rowData" pTemplate="body">
<button type="button" pButton (click)="deleteUser(user)" tooltipPosition="top" icon=" fa fa-trash"></button>
</ng-template>
</p-column>
</p-dataTable>
当我点击删除用户时,我首先需要索引,所以我在组件
中调用了这个函数
findSelectedUserIndex(): number {
return this.users.indexOf(this.selectedUser);
}
但是当我点击 deleteUser 时
deleteUser(user:User){
console.log(user);
console.log("here",this.findSelectedUserIndex());
}
此函数用于获取行selected
onRowSelect(event) {
this.newUser = false;
this.user = this.cloneUser(event.data);
this.displayDialog = true;
}
cloneUser(c: User): User {
let usr = new User();
for(let prop in c) {
usr[prop] = c[prop];
}
return usr;
}
我让用户拥有所有数据
但在 this.findSelectedUserIndex() 我得到 -1
所以任何人都可以帮助我解决这个问题并感谢
将 rowIndex
添加到您的 ng-template 并在单击删除时将其传递为
<p-column field="color" header="Supprimer" [sortable]="true">
<ng-template let-col let-user="rowData" let-i="rowIndex" pTemplate="body">
<button type="button" pButton (click)="deleteUser(user,i)" tooltipPosition="top" icon=" fa fa-trash"></button>
</ng-template>
</p-column>
你的方法应该是
deleteUser(user:User,index:number){
console.log(user);
console.log("here",index);
}
大家好,我想 select 删除和编辑项目,我不使用 Primeng 的 CRUD 数据表,我使用 ng-template 和列
所以我的代码是这样的
<p-dataTable [value]="users" selectionMode="single" [(selection)]="selectedUser" (onRowSelect)="onRowSelect($event)" [paginator]="true" rows="15" [responsive]="true">
<p-column field="nom" header="Nom" [sortable]="true"></p-column>
<p-column field="email" header="Email" [sortable]="true"></p-column>
<p-column field="brand" header="Modfier" [sortable]="true">
<ng-template let-col let-user="rowData" pTemplate="body">
<button type="button" pButton (click)="editUser(user)" tooltipPosition="top" icon="fa fa-pencil"></button>
</ng-template>
</p-column>
<p-column field="color" header="Supprimer" [sortable]="true">
<ng-template let-col let-user="rowData" pTemplate="body">
<button type="button" pButton (click)="deleteUser(user)" tooltipPosition="top" icon=" fa fa-trash"></button>
</ng-template>
</p-column>
</p-dataTable>
当我点击删除用户时,我首先需要索引,所以我在组件
findSelectedUserIndex(): number {
return this.users.indexOf(this.selectedUser);
}
但是当我点击 deleteUser 时
deleteUser(user:User){
console.log(user);
console.log("here",this.findSelectedUserIndex());
}
此函数用于获取行selected
onRowSelect(event) {
this.newUser = false;
this.user = this.cloneUser(event.data);
this.displayDialog = true;
}
cloneUser(c: User): User {
let usr = new User();
for(let prop in c) {
usr[prop] = c[prop];
}
return usr;
}
我让用户拥有所有数据
但在 this.findSelectedUserIndex() 我得到 -1
所以任何人都可以帮助我解决这个问题并感谢
将 rowIndex
添加到您的 ng-template 并在单击删除时将其传递为
<p-column field="color" header="Supprimer" [sortable]="true">
<ng-template let-col let-user="rowData" let-i="rowIndex" pTemplate="body">
<button type="button" pButton (click)="deleteUser(user,i)" tooltipPosition="top" icon=" fa fa-trash"></button>
</ng-template>
</p-column>
你的方法应该是
deleteUser(user:User,index:number){
console.log(user);
console.log("here",index);
}