Bonjour,

Je rencontre un problème avec Angular2 en effet avec Angular 1er du nom quand je voulais garder une variables un mémoire entre deux routes j'utilisais le localStorage ou je stocker le contenu d'un un Factory.

Avec Angular2 j'ai un service qui s'occupe de faire les appels API pour récupérer mes utilisateurs.
Une fois les utilisateurs récupérer ils sont renvoyé au composents qui les réclames mais aussi garder en mémoire au cas ou j'en ai besoin plus tard :

import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/add/operator/map';

@Injectable()
export class UserService {

  public user : any = {};

  constructor(private http: Http) {
    console.log("Service is loaded");
  }

  connectUser(){
    return this.http.get("https://jsonplaceholder.typicode.com/users").map(res => {
      return this.user = res.json()[0];
    });
  }

  getConnectUser{
        return this.user;
  }

}

Sur mon LoginComponent je récupére l'utilisateur et une je le redirige ensuite sur mon HomeComponent.

Et dans ce HomeComponent j'essaye de récupérer l'utilisateurs en mémoire dans mon service mais il est toujours undefined

import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { UserService } from "../../../Services/Business/user.service";

@Component({
  selector: 'app-home',
  templateUrl: './home.component.html',
  styleUrls: ['./home.component.css'],
  providers : [UserService]
})
export class HomeComponent implements OnInit {

  _userService : any;

  constructor(_userService : UserService, private router: Router) {
    this._userService = _userService;
    console.log(this._userService.getConnectUser());
  }

  ngOnInit() {}

}

J'ai l'impression que quand je change de page le component et recharger et le service aussi ? Est-ce-que c'est normal et que c'est effectivement le comportement d'un service Angular2 ?

Si oui comment faire passer mon utilisateur entre mes différents composent par la suite ?

Merci d'avance pour votre retour !

1 réponse


Azorgh
Réponse acceptée

Salut,

Dans ton cas, tu as besoin d'un Singleton. Une classe instancié qu'une seule fois. Je te laisse voir ici : http://stackoverflow.com/questions/39284424/angular-2-singleton-services