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



Using Nativescript 5.0 + Angular

无法弄清楚如何完成它?

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

  2. this.router.navigate(["secure/booking/city"]) 显示具有 listview 的新视图

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

  4. this.router.back() 被调用 onItemTap

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

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

我尝试从第二个视图使用应用程序设置并在原始视图中读回,但没有发生。

下面是代码截图

 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"));   
            });

您可以简单地将服务与 BehaviorSubject 一起使用,在原始视图中订阅它,然后根据需要更新 BehaviorSubject。

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

在数据服务 ts 文件中声明变量

public retParam = new BehaviorSubject('');

在第一个视图的 html 中:

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

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

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

this._Service.retParam.next("Pratik");

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

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

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

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

最新更新