1
votes

Comment envoyer des données depuis app.component vers d'autres composants (enfants)

J'utilise angular 6. Je souhaite envoyer des données (que j'obtiens depuis une API externe) depuis app.component vers d'autres composants (enfants), je ne souhaite pas appeler cet API / service commun dans tous les composants séparément et répétitivement. Je veux l'appeler une fois, c'est pourquoi j'appelle dans app.component.ts

Voici un code de service / API

this.mainService.getBaseModel().subscribe(ret => {
        this.basemodel = ret;
    }, error => { }, () => {
});

Je veux envoyer ceci ' valeur de basemodel pour tous les composants de mon application. Aidez-moi à le résoudre et à mieux le comprendre. Merci.


0 commentaires

3 Réponses :


3
votes

Il y a deux façons d'y parvenir,

  1. @Input , avec cela, nous pouvons transmettre les données à chaque composant enfant à partir du composant parent .
  2. Créez un service commun pour tous ces éléments, puis utilisez des méthodes de service pour obtenir l'objet

Si vous avez un ou deux composants à partager des données de Parent, utilisez @ Input sinon Service avec les dernières classes RxJs ( BehaviourSubject , Subject , etc.) pourrait être très simple.

si vous voulez suivre @Input, suivez ce post - transmettre les données @input à l'enfant

suivez ceci pour le service avec BehaviourSubject - https://medium.com/@ weswhite / angular-behaviorubject-service-60485ef064fc


0 commentaires

0
votes

Sans connaître la structure de votre application, il est difficile de dire quelle approche utiliser. Vous pouvez utiliser:

  • combinaisons de @Input () et @Output()
  • un autre service pour enregistrer et distribuer les données
  • un magasin comme ngrx

0 commentaires

0
votes

Dans la documentation officielle Angular, vous pouvez trouver plusieurs approches pour cela. Ils peuvent être trouvés ici: https://angular.io/guide/component-interaction#pass-data-from-parent-to-child-with-input-binding

Il y a aussi des exemples en direct pour les méthodes ci-dessus ici: https://stackblitz.com/angular/plpgkjondrl


0 commentaires