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; 
}