首页 > 解决方案 > Nativescript:使用 showModal 的 ModalDialogService 页面导航无法正常工作

问题描述

问题 - 我们在 showModal 上有一个关闭回调,理想情况下应该将用户导航到另一个页面。但是,当模式对话框关闭时,用户将导航回基本页面,而不是要导航的页面。

所以导航应该作为登录 -> 员工列表作为登录 -> 员工列表 -> 登录(由于额外的子路由处理而返回)

重现问题的代码可以在https://play.nativescript.org/?template=play-ng&id=lrIrYT&v=5找到

重现步骤

  1. 应用程序在主屏幕上启动
  2. 点击登录点击
  3. 弹出窗口出现。单击选择按钮。
  4. 您应该被路由到员工页面。(理想情况下)根据导航。
  5. 如果您正确路由到员工列表页面,请单击返回并移动到主页并重复从 1 到 4 的步骤。
  6. 上面提到的问题应该被复制。

标签: nativescriptangular2-nativescriptnativescript-angular

解决方案


正如@Nickliev 所建议的那样

setTimeout(() => { this._routerExtensions.navigate(['/staff-list', '10']); }, 1)

“我猜是简单的竞争条件,其中关闭回调(有时)在路由导航(返回主页)之前触发。因此,在这种情况下,模式已关闭>>您正在导航>>本机脚本正在导航(为时已晚)。使用 setTimout 保证里面的代码将在下一个 javascript 传递(VM 相关)中执行,因此:模式关闭 >> nativescript 导航 >> 你的导航“


推荐阅读