我想将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路由器在页面之间传递对象吗?
答案 0 :(得分:8)
我使用带有简单的setter和getter的服务解决了这个问题,就像后来发现的这个问题一样:
首先,我使用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();
到目前为止,它仍然有效,尽管我仍不确定是否有更好的方法来实现它。