Добавить пользовательскую кнопку в столбце действий в ng2-smart-table angular 2
В ng2-smart-table angular 2 я хочу добавить новую кнопку в столбце действий и, нажав на эту кнопку, она перенаправит на другую страницу, это кнопки добавления, редактирования и удаления, но я попытался сделать новую кнопку такой, но это не работает
settings = {
add: {
addButtonContent: '<i class="ion-ios-plus-outline"></i>',
createButtonContent: '<i class="ion-checkmark" ></i>',
cancelButtonContent: '<i class="ion-close"></i>',
confirmCreate: true,
},
edit: {
editButtonContent: '<i class="ion-edit"></i>',
saveButtonContent: '<i class="ion-checkmark"></i>',
cancelButtonContent: '<i class="ion-close"></i>',
confirmSave: true
},
delete: {
deleteButtonContent: '<i class="ion-trash-a"></i>',
confirmDelete: true
},
, как я могу добавить кнопку, я искал в документации по таблице ng2-smart, и я не могу найти ничего, связанного с этим https://akveo.github.io/ng2-smart-table/documentation
5 ответов
В моем списке компонентов
actions: {
columnTitle: 'Actions',
add: false,
edit: false,
delete: true,
custom: [
{ name: 'viewrecord', title: '<i class="fa fa-eye"></i>'},
{ name: 'editrecord', title: ' <i class="fa fa-pencil"></i>' }
],
position: 'right'
},
Тогда в шаблоне
<ng2-smart-table class="table table-hover" [settings]="settings" [source]="dataSet"
(deleteConfirm)="onDeleteConfirm($event)" (custom)="onCustomAction($event)">
</ng2-smart-table>
Эта функция помогла мне решить, какое пользовательское действие выполнить.
onCustomAction(event) {
switch ( event.action) {
case 'viewrecord':
this.viewRecord(event.data);
break;
case 'editrecord':
this.editRecord(event.data);
}
}
public editRecord(formData: any) {
this.modalRef = this.modalService.open(AddProfileComponent);
this.modalRef.componentInstance.formData = formData;
this.modalRef.result.then((result) => {
if (result === 'success') {
this.loadData();
}
}, (reason) => {
});
}
public viewRecord(formData: any) {
this.modalRef = this.modalService.open(ViewProfileComponent);
this.modalRef.componentInstance.formData = formData;
this.modalRef.result.then((result) => {
if (result === 'success') {
this.loadData();
}
}, (reason) => {
});
}
Попытайся:
В настройках ваших столбцов добавьте один столбец "Действия":
Actions: //or something
{
title:'Detail',
type:'html',
valuePrepareFunction:(cell,row)=>{
return `<a title="See Detail Product "href="Your api key or something/${row.Id}"> <i class="ion-edit"></i></a>`
},
filter:false
},
Id: { //this Id to use in ${row.Id}
title: 'ID',
type: 'number'
},
У меня была та же проблема, и я нашел решение с помощью настраиваемого действия на основе следующего примера: basic-example-custom-actions.component
настройки:
actions: {
add: false,
edit: false,
delete: false,
custom: [{ name: 'ourCustomAction', title: '<i class="nb-compose"></i>' }],
position: 'right'
},
В шаблоне: мы определяем функцию, вызываемую нашим действием
<ng2-smart-table #ourTable [settings]="settings" [source]="source"
(custom)="onCustomAction($event)">
Нам нужен роутер:
import {Router} from '@angular/router';
...
constructor(private router: Router) {}
Затем мы можем перенаправить на другую страницу:
onCustomAction(event) {
// alert(`Custom event '${event.action}' fired on row №: ${event.data.id}`);
this.router.navigate(['pages/ourPage']);
}
То же самое можно применить, когда пользователь нажимает на строку:
(userRowSelect)="onCustomAction($event)"
В вашем файле настроек поместите следующее
actions: {
edit: false, //as an example
custom: [{ name: 'routeToAPage', title: `<img src="/icon.png">` }]
}
Теперь у вас есть настраиваемая кнопка routeToAPage с img.
Затем в теге ng2-smart-table
<ng2-smart-table [settings]="settings" [source]="dataSource" (custom)="route($event)"></ng2-smart-table>
Затем вы можете создать функцию маршрута и делать то, что нужно.
Если вы все еще ищете решение, я столкнулся с той же проблемой и не смог ее исправить.
Возврат к выпуску 1.1.0 (от вас package.json) сделал это для меня! Я также обнаружил, что тег buttonContent отлично работает для редактирования и удаления, но не для добавления.
Надеюсь, эта ошибка будет исправлена в ближайшее время.
В HTML-шаблоне вы можете подписаться на редактирование события удаления:
<ng2-smart-table [settings]="settings" [source]="source" (edit)="onEdit($event)" (delete)="onDelete($event)"></ng2-smart-table>
onEdit onDelete теперь ваши пользовательские функции, чтобы что-то изменить.
надеюсь, это поможет!