Ionic 4 Angular 7-将对象/数据传递到另一页

时间:2019-01-22 08:54:11

标签: ionic-framework angular7 angular-router ionic4

我想将JSON对象传递给另一个页面。我尝试过的是使用Angular路由器ActivatedRoute传递JSON字符串,如下所示:

this.router.navigate(['details', details]);

,然后像这样检索它:

import { ActivatedRoute } from '@angular/router';


constructor(private activatedRoute: ActivatedRoute) { 
  }


ngOnInit() {

  this.activatedRoute.params.subscribe(extras => {
     console.log(extras);
     this.JSONObject = extras;
  });

}

可以这样做,但是发生的事情是无法访问嵌套的JSON对象。它变成了这个字符串:

"[object Object]"

经过字符串化的JSON对象可以通过,然后再进行访问。另一个问题是,它将JSON字符串附加到url,因此看起来不太好。根据我的理解,通过这种方式传递信息不只是一种id,不是一个好习惯。

我正在考虑诸如在Android中的活动之间传递对象作为意图额外的东西。我已经搜索了文档,论坛和以前的stackoverflow问题,但没有找到任何能使我实现这一目标的解决方案。还有其他方法可以使用Ionic4中的Angular路由器在页面之间传递对象吗?

1 个答案:

答案 0 :(得分:8)

我使用带有简单的setter和getter的服务解决了这个问题,就像后来发现的这个问题一样:

  

Ionic 4. Alternative to NavParams

首先,我使用setter和getter创建服务:

import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root'
})
export class NavExtrasService {

    extras: any;

      constructor() { }

      public setExtras(data){
        this.extras = data;
      }

      public getExtras(){
        return this.extras;
      }
    }

假设我要从A页导航到B页,即A页:

this.navExtras.setExtras(extras)
this.router.navigateByUrl('page-b');

然后在B页中,我以这种方式检索其他内容:

this.location = navExtras.getExtras();

到目前为止,它仍然有效,尽管我仍不确定是否有更好的方法来实现它。