2017-09-06 4 views
1

J'essaie d'utiliser un arbre PrimeNG avec un modèle. Tout est bien affiché, mais tout clic à l'intérieur de mon template est en train de sélectionner/déselectionner le noeud, y a-t-il un moyen de l'éviter? Dans le code suivant, je veux seulement un clic sur l'élément pour appeler doSomething(), non nodeSelected() ainsi:Comment empêcher PrimeNG Tree onNodeSelect() de se déclencher lors de l'utilisation de modèles?

<p-tree [value]="tree" selectionMode="checkbox" [(selection)]="treeSelected" (onNodeSelect)="nodeSelected($event.node.data)"> 
    <ng-template let-node pTemplate="template1"> 
     {{node.label}} 
     <span class="labelDescription">Type 1</span> 
     <a href="javascript:void(0);" (click)="doSomething(node.data)">Do Something</a> 
    </ng-template> 
</p-tree> 
+0

Put (clic) = "null" pour essayer la balise p-tree – Vega

+0

@Vega - Eh bien, je veux encore nodeSelected() être appelé lorsque la case à cocher ou l'étiquette est cliquée, mais pas lorsque l'élément est cliqué. – Learning2Code

+0

Je comprends, c'est pourquoi demandé d'essayer :) cela a-t-il fonctionné pour 'bloquer'? – Vega

Répondre

1

MISE À JOUR:

Pour éviter le bouillonnement de l'événement de clic de la article à la rangée, à l'intérieur de placer cette méthode doSomething():

doSomething($event, item){  
    event.stopPropagation(); 
    // as before 
} 

et modifier le code HTML si:

<a href="javascript:void(0);" (click)="doSomething($event, node.data)">Do Something</a> 

Vieille réponse:

Vous pouvez essayer ce qui suit:

<p-tree [value]="tree" selectionMode="checkbox" (click)="null" 
[(selection)]="treeSelected" (onNodeSelect)="nodeSelected($event,$event.node.data)"> 

nodeSelected(event, element) 
    event.stopPropagation(); 
..... 
    // as before 
} 
+0

J'ai ajouté event.stopPropagation() à doSomething(), pas nodeSelected(), et cela a fonctionné. Merci beaucoup. – Learning2Code

+0

J'ai mélangé le bouillonnement et la capture. Je suppose que vous pouvez aussi utiliser stopImmediatePropagation(). Heureux d'avoir pu aider. – Vega

+0

Nice avec le paramètre $ event.node en paramètre. Si imprimé à la console, je vois que le parent est indéfini? Au lieu de stopper la propagation, est-il possible d'obtenir un parent? –