this.router.back()在Nativescript中带有参数

时间:2019-01-12 11:07:18

标签: nativescript nativescript-angular

使用Nativescript 5.0 + Angular

无法弄清楚该怎么办?

  1. 在第一个视图(本文中称为原始视图)中,用户点击一个按钮

  2. this.router.navigate([“ secure / booking / city”])显示具有列表视图的新视图

  3. 用户点击要从视图中选择的城市项目

  4. this.router.back()称为onItemTap

  5. 用户可以看到原始屏幕

我希望城市项目的详细信息(名称和ID)恢复到原始视图。

我尝试从第二个视图使用ApplicationSettings并以原始视图回读,但是没有发生。

下面是代码片段

 this.router.navigate(["secure/booking/city"]).then((response) => {
                console.log("ret data name : " + ApplicationSettings.getString("cityname"));    
                ApplicationSettings.setString("cityname","");
            }, (e) => {
                console.log("error -ret data name : " + ApplicationSettings.getString("cityname"));   
            });

2 个答案:

答案 0 :(得分:1)

您可以简单地使用带有BehaviorSubject的服务,在原始视图中对其进行订阅,然后根据需要更新BehaviorSubject。

答案 1 :(得分:0)

根据Manoj的回复,这里是详细的解决方案。

在DataService ts文件中声明变量

public retParam = new BehaviorSubject('');

在第一视图的html中:

<Label [text]="this._Service.retParam.getValue()" verticalAlignment="center"></Label>

在第一个视图的ts文件中 公共构造函数(私有_Service:DataService)

在第二个视图的ts文件中 在onItemTap事件处理程序内

this._Service.retParam.next(“ Pratik”);

这样,当应用启动时,第一个视图中的标签显示空字符串 在第一视图中有一个按钮。

通过点击此按钮,第二个视图会加载一个列表视图 listview的onItemTap,设置retParam的值, this.router.back();被称为

这将使控件返回到第一视图,并且Label现在显示我的名字而不是空白字符串。

希望这种解释对像我这样的初学者很有用。