2017-08-07 2 views
2

Donc je travaille avec angulaire et j'essaye de faire un bouton qui clique disparaît quand on clique dessus. J'ai essayé d'utiliser [hidden], (click) = "showHide =! showHide", et un tas d'autres méthodes. rien ne fonctionne jusqu'à présent.Cacher angulaire avec le bouton

mon html (actuellement):

<div class="rows"> 
<div class="a-bunch-of-styles-for-my-button"> 
    <a type="button" class="more-styles" (click)="inboundClick = !inboundClick" [routerLink]="['/inbound']" href=""> 
    </a> 
</div> 
</div> 

et mon composant:

export class AppComponent { 
inboundClick = false; 
} 

en substance, j'ai 2 boutons sur une page et quand on clique sur le bouton que je veux cacher les boutons et afficher un ensemble de nouveaux boutons.

Je suis très nouveau à Angular et je suis très confus pourquoi cela ne fonctionnera pas.

+2

vous avez une faute d'orthographe dans le composant: 'flase' devrait être' false'. Pourriez-vous inclure le modèle pour les boutons que vous souhaitez afficher/masquer ainsi dans votre question – 0mpurdy

+0

@ 0mpurdy son épeautre n'est pas épelé dans le code réel. – RaptorJesus

+1

Ok, juste en vérifiant :) Il peut également être utile d'essayer de reproduire le problème dans un plunk [voici un modèle] (https://plnkr.co/edit/tpl:AvJOMERrnz94ekVua0u5). La meilleure directive pour se cacher serait probablement '* ngIf' - [voici un tutoriel] (https://angular-2-training-book.rangle.io/handout/directives/ng_if_directive.html) – 0mpurdy

Répondre

2

Votre HTML

<div class="yourCssClass" *ngIf="this.isButtonVisible" (click)="this.isButtonVisible = false"> 
... 
</div> 

Votre tapuscrit

export class AppComponent { 
    private isButtonVisible = true; 
} 

Cela devrait faire le travail. *ngIf masque automatiquement l'élément, si la condition évalue false, la définition de la variable à false est suffisante.

Le problème que je vois ici est que vous ne contrôlez la visibilité à aucun moment. L'utilisation de [ngClass] pour ajouter une classe spécifique, si une condition est remplie, ou *ngIf est utile, chaque fois que vous essayez de changer des éléments sur l'interaction de l'utilisateur.

Pour plus d'informations sur [ngClass], vous pouvez lire sur son utilisation ici: https://angular.io/api/common/NgClass

Vous pouvez lire *ngIf ici: https://angular.io/api/common/NgIf

Surtout la partie « Common Use » devrait être intéressant pour vous.

Edit: La lecture de votre commentaire ci-dessous, il semble que vous ne l'avez pas remarqué ce que [hidden] et (click) font réellement. [hidden] contrôle la visibilité de l'élément, généralement en fonction d'une certaine condition. (click) est cependant un moyen rapide de lier un Click-Event à votre élément.L'utilisation de ces deux outils permet de masquer un élément, en changeant une variable, si un utilisateur clique sur votre élément (la nouvelle valeur de la variable peut être affectée par une fonction appelée par (click) ou inline, comme démontré dans le exemple de code).

Edit2: Oui, vous vouliez dire Angular2/4;) Donc, cela devrait faire l'affaire.

+1

Angular référence maintenant toutes les versions d'Angular au-dessus de 2.0.0 et AngualrJS se réfère à toutes les versions avant cela. donc en fait je travaille avec Angular 4 mais c'est similaire à 2 et utilise le même nom maintenant. – RaptorJesus

+0

cela fonctionne aussi très bien. Y a-t-il un moyen de ramener l'élément? – RaptorJesus

+0

Oui! * ngIf ne cachera pas l'élément, si la condition évalue 'true', donc mettre la variable' isButtonVisible' à 'true' est suffisant. Changez simplement le code d'événement '(click)' en une fonction de bascule comme '(click) =" this.isButtonVisible =! This.isButtonVisible "'. Cependant, vous pouvez définir la variable où vous voulez (cela peut être un autre bouton comme un bouton de réinitialisation). – GxTruth

3

Voici comment vous pouvez y parvenir:

Dans votre component.html:

<a type="button" class="more-styles" 
    [hidden]="!inboundClick" 
    (click)="inboundClick = !inboundClick" 
    [routerLink]="['/inbound']" href=""> 
</a> 

<a type="button" class="more-styles" 
    [hidden]="!outboundClick " 
    (click)="outboundClick = !outboundClick " 
    [routerLink]="['/outbound']" href=""> 
</a> 

... et dans votre AppComponent:

export class AppComponent { 
    inboundClick = true; 
    outboundClick = true; 
} 

PLUNKER DEMO

+0

cela a fonctionné parfaitement. Je n'ai pas réalisé que vous deviez utiliser [hidden] et (click) en même temps. Enfin pourriez-vous le retourner avec une variable différente dans le composant pour le montrer à nouveau si un bouton différent a été cliqué? – RaptorJesus

+0

vérifier ce lien de plunker j'ai créé: https://plnkr.co/edit/BGIQZV7V69pYUPuO2sFV?p=preview – Faisal

+0

@RaptorJesus pourquoi downvoted? La solution fonctionne selon vos besoins. Étrange:/ – Faisal