2017-10-17 1 views
0

Je pense que mon problème est très simple, mais je vais certainement me passer.Variable globale et comment passer la valeur dans IONIC3

Je dois mettre un TOKEN pour les requêtes HTTP dans une variable globale après la connexion. Dans ma page de connexion, le HTTP get, retourne un objet avec: code HTTP (200,403,403), un message ("Success") et le TOKEN, et je passe cet objet à la page HOME.ts true le NavController.

this.navCtrl.setRoot(HomePage,{ 
    data <<--- Object       
    }); 

Mais quand j'essaie de mettre ce retour "données" dans un objet du type "Connexion"

export class Login { 

code:number; 
token:string; 
message:string; 

constructor(code?:number, token?:string, message?:string){ 
    this.code = code; 
    this.token = token; 
    this.message = message; 

} 

}

Pour mettre la atribute Login.token dans la variable globale , rien n'arrive.

J'ai fait un test et c'est ce que j'ai appris jusqu'à maintenant.

Dans le HOME.ts j'ai mis un peu console.log, pour comprendre ce qui se passe.

console.log(this.navParams.data.data); ----> RESULT 1 

console.log(this.navParams.get("data")); ----> RESULT 2 

this.dadosRest = this.navParams.get("data"); 

console.log(this.dadosRest); ----> RESULT 3 

console.log(this.dadosRest.token); -----> RESULT 4 

RÉSULTAT 1 et 2 et 3:

{success: {…}} 

succès : Code : un message : « Bienvenue admin - Ceci est votre jeton (généré par un appel précédent) " jeton : " 676f71bab54dad7589c3d1b6b5f5b24de0f8c484 " proto : objet proto : objet

RÉSULTAT 3:

non définie

Pourquoi je ne peux pas mettre ce retour dans la Connexion d'objets pour gérer?

Répondre

0

N'utilisez pas de globales. Vous pouvez utiliser un shared service (créez un service que vous injectez dans les composants, et vous utilisez une méthode pour y stocker votre jeton et un autre pour lire la valeur stockée) ou le stocker dans une sorte de stockage (comme le Ionic Storage) ou même (et plus compliqué) utiliser un conteneur d'état, comme Redux.

Quoi qu'il en soit: ne pas polluer la portée globale. Peut-être que vous pourriez le faire en utilisant quelque chose comme

window.token = 'the token' 

mais ce n'est pas une bonne idée.

+1

Ouais mec, je comprends comment résoudre mon problème ... et je suis votre adivise et maintenant j'ai fait un service partagé! Merci mec! –