Je travaille sur une application de commerce électronique et j'ai du mal à créer un objet singleton que je peux utiliser comme panier de mon application.Chaque objet accédé retourne un nouvel objet
D'abord, je créé un service:
import {Injectable} from '@angular/core';
import {Item} from '../models/item';
@Injectable()
export class CartService {
private items: Item[];
constructor() {
this.items = [];
}
public addToCart(item: Item): string {
...
}
public getItems(): Item[] {
return this.items;
}
}
puis dans mes app.module.ts:
import { CartService } from '../services/cart.service';
@NgModule({
declarations: [
MyApp,
...
],
imports: [
...
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
...
],
providers: [
...
CartService
]
})
export class AppModule {}
Maintenant, je veux avoir les cartService.getItems comme un tableau singleton d'articles, donc je fais:
@IonicPage({
name: 'destaques-page'
})
@Component({
selector: 'page-destaques',
templateUrl: 'destaques.html'
})
export class DestaquesPage {
...
constructor(public navCtrl: NavController, db: AngularFireDatabase, private cart: CartService) {
...
console.log(this.cart.getItems.length);
}
...
}
dans chaque page Je veux accéder à cet objet, mais dans chacun je reçois une marque nouvel objet qui signifie que je peux Je n'ai pas tous les différents éléments que j'ai déjà ajoutés.
Qu'est-ce qui me manque ici?
Idéalement, il ne devrait pas, avez-vous mis journal de la console dans le constructeur et de voir combien de fois ça devient appelé ? – Skeptor
Pouvez-vous modifier la question pour inclure le décorateur de classe pour la classe/le composant 'DestaquesPage'? Je voudrais voir un fait que vous n'avez * pas * une section «fournisseur» avec le «CartService» là aussi. –
@Skeptor quel constructeur voulez-vous que je mette le journal? L'un DestaquesPage ou l'app.component.ts? – Rob