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:
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:
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