2017-08-03 5 views
2

J'ai table primeNG:Comment empêcher un clic sur l'une des colonnes de la rangée - tables de données primNG?

<p-dataTable [value]="cars" selectionMode="single" 
(onRowSelect)="onRowSelect($event)"> 
    <p-column field="vin" header="Vin"></p-column> 
    <p-column field="year" header="Year"></p-column> 
    <p-column field="brand" header="Brand"></p-column> 
    <p-column styleClass="grid-col-btn" [style]="{'width':'58px'}"> 
    <ng-template let-gateway="rowData" pTemplate="body"> 
    <button type="button" class="btn btn-default btn-flat" 
(click)="deleteCarsFromList(car)"><i class="fa fa-trash-o"></i> 
    </button> 
    </ng-template> 
    </p-column> 
</p-dataTable> 

Parce que j'utilise l'icône impressionnante police dans l'action bouton après clic ne fonctionne pas correctement. Lorsque je clique directement sur l'icône, je ne peux pas déclencher la méthode (clic), car l'action provient de (onRowSelection). Comment puis-je empêcher le clic sur cette colonne spécifique dans le tableau? Pour être sûr que chaque fois que j'utilise la méthode ajoutée au bouton pas la table entière.

+1

Voulez-vous dire que votre méthode 'deleteCarsFromList (voiture)' est pas appelé? – BillF

+0

Appelle lorsque je clique sur la bordure du bouton, mais si je clique directement sur l'icône n'appelant pas – Italik

Répondre

1

Un problème que je peux voir à partir de votre code partagé, est que votre <ng-template> utilise let-gateway pour attribuer votre variable de modèle, mais vous utilisez car dans votre modèle.

I have provided a plnkr that shows it working correctly

+0

Ce n'était qu'un exemple. Mais comment bloquer toute la dernière colonne? Donc, quand j'ai cliqué sur cette colonne, la couleur de la rangée ne changera pas. – Italik

+0

Voulez-vous dire que vous voulez que la ligne ne sélectionne PAS lorsque vous cliquez ailleurs dans la colonne? – BillF

+0

Yup. Parce que 'selectionMode = "single"' 'fonctionne pour chaque colonne. Je veux empêcher ce clic sur la colonne las. – Italik