0

我正在使用 Angular 7 路由器 navigationExtras 状态将数据(json)发送到页面,并且我想在向前导航时防止返回此页面。

我尝试在“recieverDataPage”中使用条件,所以当我没有数据时,它会返回上一页,但看起来很糟糕,我认为这不能算是好的做法。

我正在分享我在“dataPage”和“recieverDataPage”中使用的代码:

DataPage 传递数据代码:

openTicketDetail(ticket: any) { 
let navigationExtras: NavigationExtras = {
      state: {
        ticket: ticket
      }
   };
this.router.navigate(['/menu/ticket-detail'], navigationExtras);
}

recieverDataPage 获取数据代码:

export class TicketDetailPage implements OnInit {
  ticket:any;
  constructor(private router: Router, private route: ActivatedRoute) {
    this.route.queryParams.subscribe(params => {
      if (this.router.getCurrentNavigation().extras.state) {
        this.ticket = this.router.getCurrentNavigation().extras.state.ticket;
      }
    });
  }
}

我的导航历史是这样的:dataPage -> recieverDataPage -> anotherPage

当我从 dataPage 转到 recieverDataPage 时它工作正常,但是当我从 anotherPage 返回到 recieverDataPage 时,我应该存在的数据未定义,我想防止这种情况发生,可能会跳过 navigationBack 到此页面。

4

1 回答 1

0

您可以使用页面中已有的值在 receiverDataPage 中创建 onDismiss 函数。此函数在 anotherPage 关闭时运行,在本例中为导航返回。如果它不能与路由器一起使用,您可以尝试使用 ionic 的 NavController。如果这不起作用,您可以使用不需要运行任何 onDismiss 的模态来实现它,因为模态将在当前页面内打开,并且您不会丢失 receiverDataPage 上的任何数据。

一旦我用一些编码抓住我的电脑,我可以更好地解释:D

于 2019-08-16T08:27:26.480 回答