2017-10-17 59 views
0

我認爲我的問題非常簡單,但我肯定會傳遞我的東西。全局變量以及如何傳遞IONIC3中的值

我需要在登錄後在HTTP全局變量中放置一個TOKEN。 在我的登錄頁面中,HTTP get,返回一個對象,其中包含:HTTP代碼(200,403,403),消息(「成功」)和TOKEN,並且將該對象傳遞給HOME.ts頁面。

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

但是,當我試圖把這個返回「數據」,在類型的對象「登錄」

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; 

} 

}

若要將屬性附加傷害Login.token全局變量裏面, 什麼都沒發生。

我做了一些測試,這是我知道的。

在HOME.ts中我放了一些console.log,來弄清楚會發生什麼。

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 

RESULT 1和2和3:

{success: {…}} 

成功 : 代碼 :消息 : 「歡迎管理 - 這是您的令牌(由先前的呼叫產生的) 「 token : 」676f71bab54dad7589c3d1b6b5f5b24de0f8c484「 proto : 對象 : 對象

結果3:

不確定

爲什麼我不能把對象登錄這裏面的回報來管理?

回答

0

請勿使用全局變量。 您可以使用shared service(創建一個服務,您注入的組件中,他們使用一種方法來存儲您的令牌,另一個來讀取存儲的值)或將其存儲在某種存儲中(如Ionic Storage )甚至(更復雜的)使用一些狀態容器,比如Redux。

無論如何:不要污染全球範圍。也許你可以用類似

window.token = 'the token' 

但這不是一個好的理想。

+1

是的男人,我知道如何解決我的問題...我遵循你的adivise,現在我做了一個共享的服務!謝啦! –