0
votes

Table observable non mise à jour après un nouvel article ajouté

Je fais une application de crud simple pour faire de l'exercice et j'ai un problème avec la table de mise à jour automatiquement.

Je appelle des données d'API, ainsi que de nouvelles données sur API. Liste de tables intégrée I montrant avec ng-bootstrap, et pour ajouter un nouvel article, j'utilise la boîte modale de bootstrap.

dans mon Service Voici mon code pour obtenir tous les utilisateurs et Ajouter un nouvel utilisateur xxx

et voici le code de user.Component xxx

après un Page rafraîchissante, les nouvelles données sont dans une table, mais comment l'obtenir sans rafraîchir? Pls si quelqu'un me peut expliquer ce que je fais mal? Thnx


0 commentaires

3 Réponses :


1
votes

Ne vous abonnez pas au service. Renvoie une méthode observable de votre updatehauser () (qui doit être nommé CreateUser () ou adduser () , BTW). Ensuite, utilisez Switchmap () dans le composant pour répertorier les utilisateurs à nouveau une fois que vous savez que la création a réussi: xxx

aussi, n'utilisez pas aucun . / code>. Définir une interface utilisateur désaccorder la structure d'un utilisateur et l'utiliser. Et ne stockez pas collectionsize , puisque vous pouvez l'obtenir simplement à partir de allusers.length : c'est redondant.


0 commentaires

1
votes

Mettez à jour votre méthode de service pour revenir observable xxx

puis dans le composant Utilisateurs xxx

Supprimer this.Alutilisateurs = [ ]; de votre getUserSInlist BCS Il videra la liste et l'interface utilisateur montrera une page vierge jusqu'à ce que les données chargées


5 commentaires

Ici, j'obtiens Propriété 'S'abonner' n'existe pas sur le type 'void'


@Arter BCS Il est BCS Vous n'avez pas utilisé le mot-clé de retour dans votre méthode de service.Lake sûr qu'il devrait être renvoyer cela.httpclient.post (environnement.base_url + "utilisateur / ajouter /", formdata); au lieu de this.httpclient.post (environnement.base_url + "utilisateur / add /", formdata);


@Arter heureux ça a aidé


Une question sur ceci.Alutilisateurs = []; ... si je supprimais it Thei obtenez usercompomp . Mais ma question est de ma question à propos de cela Stackoverflow.com/Questtions/58131100/...


@Arter Utilisez Alluser: iuer [] = []; au lieu de Alluser: iuer [];



1
votes

Utilisez le tuyau async code> pour obtenir le résultat de la demande à l'interface utilisateur.

<div *ngFor="let user of getUsers() | async"> ...


1 commentaires

Lorsque vous utilisez un tuyau ASYNC, vous n'avez pas besoin de vous abonner à partir du composant. Angulaire faire ça pour vous. Donc, supprimez la logique GetUserer du composant.