IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Angular Discussion :

Code suscriber executé avant ngOnInit


Sujet :

Angular

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2015
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Code suscriber executé avant ngOnInit
    Bonjour,
    Je cherche à faire en sorte qu'un composant qui est suscriber d'un Subject execute le code lié au changement d'état du Subject avant que le composant soit initialisé (ngOnInit()).
    J'ai un service cartService (panier) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    .... import ....
    @Injectable({
      providedIn: 'root'
    })
     
    export class CartService {
      public updateCartSubject = new Subject<any>();
      public cart: any;
      constructor() {
      }
     
      public updateCart(data) {
        this.cart = data;
        this.updateCartSubject.next(this.cart);
      }
    ....
    }
    Et un composant CheckoutCartComponent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    .... import ....
    export class CheckoutCartComponent implements OnInit, OnDestroy {
      public items = [];
      public coupons = [];
      public paliers = [];
      public paliers_available = [];
      public totals = {
        discount: {
          inc_tax: 0,
          exc_tax: 0
        },
        exc_tax: 0,
        inc_tax: 0,
        subtotal: {
          inc_tax: 0,
          exc_tax: 0
        }
      };
      public countries = [];
      public accept_terms = false;
      public coupon_code = '';
      public coupon_loading = false;
      public coupon_error = false;
      public coupon_success = false;
     
      cartSubscription: Subscription;
     
      constructor(private cartService: CartService) {}
     
      ngOnInit(): void {
        this.cartSubscription = this.cartService.updateCartSubject.subscribe((data) => {
          this.editData(data);
        });
      }
     
      public editData(cart){
        if (cart && cart.items && cart.totals) {
          this.items    = cart.items;
          this.coupons  = cart.coupons;
          this.paliers  = cart.paliers;
          this.paliers_available  = cart.paliers_available;
          this.totals   = cart.totals;
        } else {
          this.items    = [];
          this.coupons  = [];
          this.paliers  = [];
          this.totals   = {
            discount: {
              inc_tax: 0,
              exc_tax: 0
            },
            exc_tax: 0,
            inc_tax: 0,
            subtotal: {
              inc_tax: 0,
              exc_tax: 0
            }
          };
        }
      }
    .....
    Le problème étant que la fonction updateCart() est appelé dans plusieurs composants mais que tant que je suis pas sur la page du composant CheckoutCartComponent le code dans la methode suscribe() n'est pas exécutée.

    Avez vous une solution pour ceci ?

    Merci d'avance,
    Killian

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2019
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2019
    Messages : 707
    Points : 1 030
    Points
    1 030
    Par défaut
    faut utiliser un BehaviorSubject
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    export class CartService {
      public updateCartSubject = new BehaviorSubject<any>([]); // et l'initialiser avec un tableau vide vu que tes données sont : <any>            
       // {}  si objet

Discussions similaires

  1. Dernière ligne du code executée avant les autres
    Par TabbHonmin dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/11/2016, 18h34
  2. Création de Task executé avant la compliation.
    Par mr_keyser dans le forum Framework .NET
    Réponses: 3
    Dernier message: 05/09/2007, 21h54
  3. [C] code pour executer une commande shell
    Par waldoun dans le forum Linux
    Réponses: 3
    Dernier message: 05/05/2007, 22h41
  4. [Utilisation] Validation du code à la BSD avant intégration
    Par HNT dans le forum Subversion
    Réponses: 8
    Dernier message: 15/11/2006, 09h57
  5. Requete executé avant le clique sur le bouton.
    Par mael94420 dans le forum ASP
    Réponses: 2
    Dernier message: 16/06/2005, 14h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo