dans ng2-smart-table angular 2, je souhaite ajouter un nouveau bouton dans la colonne Actions et cliquer sur ce bouton pour accéder à une autre page Il s'agit des boutons d'ajout, de modification et de suppression, mais j'ai essayé de créer le nouveau bouton. comme ça mais ça ne marche pas
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
},
, comment puis-je ajouter le bouton, j’ai cherché dans la documentation de la table ng2-smart et je ne trouve aucun élément lié à cette/ https://akveo.github.io/ng2-smart-table/documentation
Dans votre fichier de paramètres, mettez ce qui suit
actions: {
edit: false, //as an example
custom: [{ name: 'routeToAPage', title: `<img src="/icon.png">` }]
}
Vous avez maintenant un bouton routeToAPage personnalisé avec un img.
Ensuite, dans votre tag ng2-smart-table,
<ng2-smart-table [settings]="settings" [source]="dataSource" (custom)="route($event)"></ng2-smart-table>
Ensuite, vous pouvez créer une fonction de route et faire ce qu’elle doit faire.
Essayez le:
Dans vos paramètres de colonnes, ajoutez une colonne "Actions":
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'
},
J'ai eu le même problème et j'ai trouvé la solution avec une action personnalisée, basée sur l'exemple suivant: basic-example-custom-actions.component
réglages :
actions: {
add: false,
edit: false,
delete: false,
custom: [{ name: 'ourCustomAction', title: '<i class="nb-compose"></i>' }],
position: 'right'
},
Dans le template: on définit la fonction appelée par notre action
<ng2-smart-table #ourTable [settings]="settings" [source]="source"
(custom)="onCustomAction($event)">
Nous avons besoin du routeur:
import {Router} from '@angular/router';
...
constructor(private router: Router) {}
Ensuite, nous pouvons rediriger vers une autre page:
onCustomAction(event) {
// alert(`Custom event '${event.action}' fired on row №: ${event.data.id}`);
this.router.navigate(['pages/ourPage']);
}
La même chose peut être appliquée lorsqu'un utilisateur clique sur une ligne:
(userRowSelect)="onCustomAction($event)"
Au cas où vous chercheriez toujours une solution, j'ai rencontré le même problème et je ne pouvais pas le résoudre.
Revenir à la version 1.1.0 (de votre package.json) l’a fait pour moi!.
Espérons que ce bug sera corrigé bientôt.
Dans mon composant de liste
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'
},
Puis dans le template
<ng2-smart-table class="table table-hover" [settings]="settings" [source]="dataSet"
(deleteConfirm)="onDeleteConfirm($event)" (custom)="onCustomAction($event)">
</ng2-smart-table>
Cette fonction m'a aidé à choisir l'action personnalisée à exécuter.
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) => {
});
}