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