1

我是新來的離子型2後到處尋找我無法找到給出的以下情形直接回答:訪問URL參數

  1. 我建立與離子2(因爲我會PWA後來開發這個應用程序的混合動力版)
  2. ,用戶會發現和訪問我的應用程序會像https://welcometotheapp.com?viewid=0101018737abcdefg
  3. 標準領域我使用的離子2的地址,最近安裝上10
  4. 我已經開始了一個新的窗口空白應用程序項目
  5. 我的問題與導航無關。

我的問題是我該如何去訪問url參數viewid?我需要這個參數,以便應用程序將它發送到我的服務器端REST API並獲取正確的JSON數據。我的用戶通過短信接收帶有參數的URL作爲鏈接。 我試圖利用幾個建議,如this question

但我正在旋轉我的車輪。我還觀看了Josh Morony和其他人的許多YouTube視頻,但沒有直接關係。

有人可以幫助解決這個問題嗎?作爲一個新手,如果在給定ionic2空白模板結構的情況下代碼片段被註釋爲什麼代碼在哪個文件中進行註釋將會非常有幫助。謝謝偷窺!

回答

2

你可以嘗試普通的老javascript。我不認爲這是任何特定的離子。而且因爲它主要不是基於導航的,所以NavParams不起作用,我猜測。

.js你可以做一個split像這樣

let myParam = location.search.split('viewid=')[1]; 

需要注意的是,如果沒有viewId=那麼變量將是不確定的。這裏是文檔location.search

+0

謝謝,我成功地使用JavaScript的這種事情之前。所以就結構而言,如果我創建了一個.js文件,比如「readurl.js」,我將它放在應用程序文件樹中,我將如何引用/調用它?從url讀取參數是加載後應用程序需要做的第一件事。 json數據將顯示在home.html上。 – detourOfReason

+0

我建議將它添加到構造函數中的'app.component.ts'中。或者根據你如何操作數據,在構造函數中使用'home.ts'或'ionViewDidLoad()'函數 – 2017-03-07 11:29:43

+0

感謝您的幫助。在我的情況下,我最終將它添加到ionViewDidLoad()函數中的home.ts中,因爲我只想檢索初始加載時的參數。從文檔中我瞭解到,如果放在構造函數中,它會在每次加載頁面時運行。在我的情況下,這是不可取的。再次,非常感謝! – detourOfReason

0

我不得不使用Location@angular/common。所以我相信是值得張貼另一個答案:

import { Location } from '@angular/common'; 

... 

public urlParams: any; 

constructor(..., public location: Location) { 
    this.initializeURLParams(); 
    console.log(this.urlParams); 
} 

initializeURLParams() { 
    const path = this.location.path(true), 
    hasParams = /\?(.+?\=.+){1}/; 
    let params; 

    if (hasParams.test(path)) { 
    params = {}; 
    path.split('?')[1].split('&').forEach(both => { 
     let e = both.split('='); 
     params[e[0]] = e[1]; 
    }); 
    } 

    this.urlParams = params; 
}