Comment mettre à jour un composant sans actualiser la page entière - Angular
Ma structure de la Page est:
<app-header></app-header>
<router-outlet></router-outlet>
<app-footer></app-footer>
Comment puis-je mettre à jour/actualiser les app-header
composant, sans actualiser la page entière?
Je veux cacher un "Sign-In" dans l'en-tête, une fois que l'utilisateur a réussi à se connecter. L'en-tête est commun à tous les composants/routes.
source d'informationauteur Aravinthan M
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser un
BehaviorSubject
pour la communication au sein des différents composants tout au long de l'application. Vous pouvez définir un service de partage de données contenant lesBehaviorSubject
à laquelle vous pouvez souscrire et à émettre des changements.Définir un partage des données de service
Ajouter le
DataSharingService
dans votreAppModule
fournisseurs d'entrée.Ensuite, importez les
DataSharingService
dans votre<app-header>
et dans le composant où vous effectuez le signe de l'opération. Dans<app-header>
abonnez-vous à la modification deisUserLoggedIn
sujet:Dans votre
<app-header>
modèle html, vous devez ajouter le*ngIf
condition par exemple:Enfin, vous avez juste besoin d'émettre l'événement une fois que l'utilisateur s'est connecté.e.g:
Angulaire sera automatiquement mise à jour d'un composant lorsqu'il détecte un changement de variable .
De sorte que tous vous avez à faire pour "actualiser" est de s'assurer que l'en-tête a une référence pour les nouvelles données. Ce pourrait être par l'intermédiaire d'un abonnement dans un délai de
header.component.ts
ou par l'intermédiaire d'un@Input
variable...un exemple...
main.html
principal.composante.ts
header.html
en-tête.ts
Dans l'exemple ci-dessus, l'en-tête recevrez les nouvelles données toutes les 250ms et ainsi mettre à jour le composant.
Pour plus d'informations sur Angulaire du cycle de vie des crochets, voir: https://angular.io/guide/lifecycle-hooks
L'une des nombreuses solutions est de créer un
@Injectable()
classe qui contient les données que vous voulez afficher dans l'en-tête. D'autres composants peuvent également accéder à cette classe et de modifier ces données, de manière efficace de changer l'en-tête.Une autre option est de mettre en place
@Input()
variables et@Output()
EventEmitters que vous pouvez utiliser pour modifier les données d'en-tête.Modifier Exemples comme vous l'avez demandé:
dans d'autres composant:
dans l'en-tête de la composante:
Je n'ai pas réellement essayé. Si les get/set ne fonctionne pas, vous pouvez le modifier pour utiliser un Objet();
De composant mise à jour du
Vous pouvez utiliser de nombreuses approche comme afficher, de masquer à l'aide de ngIf
Vous pouvez également utiliser les services de