tyn*_*tyn 4 ionic-framework angular-router ionic4 angular7
我想将JSON对象传递给另一个页面。我尝试过的是使用Angular路由器传递JSON字符串,ActivatedRoute如下所示:
this.router.navigate(['details', details]);
Run Code Online (Sandbox Code Playgroud)
然后像这样检索它:
import { ActivatedRoute } from '@angular/router';
constructor(private activatedRoute: ActivatedRoute) {
}
ngOnInit() {
this.activatedRoute.params.subscribe(extras => {
console.log(extras);
this.JSONObject = extras;
});
}
Run Code Online (Sandbox Code Playgroud)
可以这样做,但是嵌套的JSON对象变得无法访问。它变成了这个字符串:
"[object Object]"
Run Code Online (Sandbox Code Playgroud)
字符串化的JSON对象很好,可以在我通过它之前进行访问。另一个问题是,它将JSON字符串附加到url,因此看起来不太好。从我的阅读中也可以看出,传递某种东西不仅仅是一种好id方法。
我在想类似在Android活动之间传递对象作为意图附加项的事情。我已经搜索了文档,论坛和以前的stackoverflow问题,但没有找到任何能使我实现这一目标的解决方案。使用Ionic4中的Angular路由器还有其他方法在页面之间传递对象吗?
tyn*_*tyn 11
我使用带有简单的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;
}
}
Run Code Online (Sandbox Code Playgroud)
假设我要从页面A导航到页面B,即页面A:
this.navExtras.setExtras(extras)
this.router.navigateByUrl('page-b');
Run Code Online (Sandbox Code Playgroud)
然后在B页中,我通过这种方式检索了其他内容:
this.location = navExtras.getExtras();
Run Code Online (Sandbox Code Playgroud)
到目前为止,它仍然有效,尽管我仍不确定是否有更好的方法来执行此操作。
| 归档时间: |
|
| 查看次数: |
4888 次 |
| 最近记录: |