如何在不使用离子的this.navCtrl.push(PostPage,data)的情况下将数据传递到另一个页面

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在不使用离子的this.navCtrl.push(PostPage,data)的情况下将数据传递到另一个页面相关的知识,希望对你有一定的参考价值。

假设我已将用户登录用户名作为数据传递给php api url,以便从数据库中获取用户详细信息

let data = {
  username: this.username
     };

this.http.post('http://onitor.com/api/retrieve_data.php',data, options)

当数据以json格式返回时,

.map(res => res.json())
  .subscribe(res => {
   loader.dismiss()
    this.items=res.server_response;
    console.log(this.items);
    });
    });

我想将这些数据传递给PostPage,我不想使用像这样的推送方法

this.navCtrl.push(PostPage, data); 

我该怎么做?我还不熟悉离子。

谢谢。

答案

你可以使用服务。在该服务中写入http请求代码并使用Promise返回数据。在服务中声明全局变量并在整个应用程序中的任何位置访问它

在您的service.ts文件中,

data: any;

retrieveData(){
    return new Promise(resolve => {
      this.http.post("http://onitor.com/api/retrieve_data.php", data)
      .subscribe(data => {
        this.data = data;
        resolve(data);
      });
    });
}  

getData(){
  return this.data;
}

在你的component.ts中,

postData(){
    let postParams = {

    }
    this.myService.retrieveData(postParams)
      .then(data => {
        console.log("Response: ", data);
      })
      .catch(error => {
        console.log("Error: ", error)
    });
}

getData(){
  this.myService.getData();
}
另一答案

Tonye

您可以将数据存储在localStorage中。请看这个链接:https://answerdone.blogspot.com/2018/03/how-to-store-and-use-data-globally-in.html

另一答案

尝试将其存储在存储中,并从应用程序中的任何位置存储。

在你的第一页

// set it in storage
setData() {
    window.localStorage.setItem('account', JSON.stringify(data));
}

在你的第二页

// get it from storage
// create account variable where you will pass the data
account: any;

getData() {
    this.account = window.localStorage.getItem('account');

    //check on how you will access the username
    console.log(this.account);
}

以上是关于如何在不使用离子的this.navCtrl.push(PostPage,data)的情况下将数据传递到另一个页面的主要内容,如果未能解决你的问题,请参考以下文章

离子地理定位总是陷入错误方法

离子2形式验证

如何添加离子/离子2 /离子3 /离子4的本地cordova插件?

在离子框架中使用复选框时如何从离子标签中删除空间

如何使用离子5中的离子相机插件将图像存储在数据库中

如何在离子3(Typescript)中使用Javascript插件?