Angulaire 2 Afficher et Masquer un élément
Je vais avoir un problème de masquage et affichage d'un élément en fonction d'une variable booléenne Angulaire 2.
ceci est le code de la div pour afficher et masquer:
<div *ngIf="edited==true" class="alert alert-success alert-dismissible fade in" role="alert">
<strong>List Saved!</strong> Your changes has been saved.
</div>
la variable est "modifié" et il est stocké dans mon composant:
export class AppComponent implements OnInit{
(...)
public edited = false;
(...)
saveTodos(): void {
//show box msg
this.edited = true;
//wait 3 Seconds and hide
setTimeout(function() {
this.edited = false;
console.log(this.edited);
}, 3000);
}
}
L'élément est caché, quand saveTodos fonction démarre, l'élément est affiché, mais au bout de 3 secondes, même si la variable revenir à false, l'élément ne doit pas se cacher. Pourquoi?
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser l' *ngIf Directive
Mise à jour: il vous manque la référence à l'extérieur de la portée lorsque vous êtes à l'intérieur du Délai de rappel.
alors ajoutez-le .bind(ce) comme je l'ai ajoutée au-Dessus de
edited
est une variable globale. Quelle serait votre approche au sein d'un*ngFor-loop
?Il y a deux options, selon ce que vous voulez atteindre :
Vous pouvez utiliser le caché de la directive pour afficher ou masquer un élément
Vous pouvez utiliser le ngIf directive de contrôle d'ajouter ou de supprimer l'élément. Ceci est différent de l'cachés de la directive, car il n'a pas d'afficher /masquer un élément, mais il ajouter /supprimer du DOM. Vous pouvez perdre des données non enregistrées de l'élément. Il peut être le meilleur choix pour modifier un composant qui est annulée.
Pour vous le problème du changement après 3 secondes, cela peut être dû à une incompatibilité avec setTimeout. Avez-vous inclus angular2-polyfills.js bibliothèque dans votre page ?
[hidden]="edited"
ne semble pas avoir des effets...?[hidden] { display: none !important;}
dans votre css.Lorsque vous n'avez pas de soins sur la suppression du Dom Html-Élément, utilisez *ngIf.
Sinon, utilisez ceci:
Pour enfant composant pour montrer que j'ai été en utilisant
*ngif="selectedState == 1"
Au lieu de cela, j'ai utilisé
[hidden]="selectedState!=1"
Il a travaillé pour moi.. le chargement du composant enfant correctement et après la peau et non cacher composant enfant n'était pas non défini après l'utilisation de ce.
C'est un bon cas d'utilisation de directive. Quelque chose comme ceci est très utile.
ngIf
esttrue
. Est-il un moyen de régler le parent variable qui contrôle cefalse
?ngIf
est plus de savoir si l'élément est dans le DOM ou pas. Ce que je veux, c'est ceci:<div [hidden]="messages" [removeAfter]=3000>...
où je afficher/masquer les messages si il y a de tout et puis de supprimer les messages après 3 secondes, de sorte que l'utilisateur n'a pas à fermer la boîte. J'ai ajouté votre directive ci-dessus et commuté à faire unhide()
mais il n'est pas appelée lorsque les messages sont affichés. Comment puis-je obtenir pour être invoqué à l'événement?@Output()
etEventEmitter
?En fonction de vos besoins,
*ngIf
ou[ngClass]="{hide_element: item.hidden}"
où la classe CSShide_element
est{ display: none; }
*ngIf
peut entraîner des problèmes si vous décidez de changer les variables d'état*ngIf
est la suppression, dans ces cas, à l'aide de CSSdisplay: none;
est nécessaire.Nous pouvons le faire en utilisant le code ci-dessous snipet..
Angulaire Code:
Modèle Html:
@inoabrian solution ci-dessus a fonctionné pour moi. J'ai couru dans une situation où je refresh ma page et mon élément masqué réapparaissent sur ma page. Voici ce que j'ai fait pour le résoudre.
Juste ajouter bind(ce) dans votre fonction setTimeout il va commencer à travailler
et en HTML changement
À