【问题标题】:How to check if condition for previous page url in Angular?如何检查Angular中上一页网址的条件?
【发布时间】:2021-05-27 21:50:36
【问题描述】:

我正在使用 Angular,我几乎可以使用以下代码获得上一页链接 URL。

this.router.events
.pipe(filter((evt: any) => evt instanceof RoutesRecognized), pairwise())
.subscribe((events: RoutesRecognized[]) => {
  console.log('previous url', events[0].urlAfterRedirects);
  console.log('current url', events[1].urlAfterRedirects);
});

我得到了上一页的链接网址

但现在我想在 .ts 文件中为该 URL 设置 if 条件。

我尝试下面的 if 条件代码。

if (events[0].urlAfterRedirects === '/resources/grid-view'){
      
}

我得到了这个错误,所以任何人都可以帮助我正确地制作这个 if 条件语法。

【问题讨论】:

  • 看看你的括号和大括号......真的是你要问的吗??
  • 除了有两个不必要的括号外,最好的做法是尽量避免使用这些神奇的字符串。在 ts 文件顶部或某个适当位置定义的常量可能更合适。
  • 我编辑了我的括号和大括号错误。但当前是在当前情况下制作 if 条件的正确语法。
  • 如果您确定要检查的字符串将完全是 '/resources/grid-view' 而不是 '/resources/grid-view?somequery=something''/resources/Grid-view' 或任何其他突变,那么您就可以了。
  • 你确定你的条件块在订阅块内吗?

标签: javascript html angular typescript


【解决方案1】:
this.router.events
.pipe(filter((evt: any) => evt instanceof RoutesRecognized), pairwise())
.subscribe((events: RoutesRecognized[]) => {
  console.log('previous url', events[0].urlAfterRedirects);
  console.log('current url', events[1].urlAfterRedirects);
  if (events[0].urlAfterRedirects === '/resources/grid-view'){
      // You got it. Now you can redirect from here if you wish to.
  }
});

反应式编程是一种使用事件流概念的编程方法。我们可以使用管道和其他操作符对流进行弯曲或修改,并最终订阅这些流,以获得不同来源提供的最终数据流。要了解有关 RxJs 的更多信息,它是一种反应式编程库,请访问:https://rxjs.dev/guide/overview

回到问题,

但我想在此页面的其他位置使用该条件,所以有什么方法可以存储在 var 中并设置 if 条件。?

为什么您不会在subscribe 块之外获得events 参数,因为它绑定在回调函数的本地块内。如果您迫切需要将该条件块放在页面中的其他位置,那么您必须将该条件块包装在一个接受events 作为参数的函数中,然后您可以将events 传递给它。

这样的东西应该允许您在页面的其他位置使用events 参数:

this.router.events
.pipe(filter((evt: any) => evt instanceof RoutesRecognized), pairwise())
.subscribe((events: RoutesRecognized[]) => {
  console.log('previous url', events[0].urlAfterRedirects);
  console.log('current url', events[1].urlAfterRedirects);
  this.workWithEvents(events);
});
...
workWithEvents(events: RoutesRecognized[]) {
  if (events[0].urlAfterRedirects === '/resources/grid-view'){
      // You got it. Now you can redirect from here if you wish to.
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-26
    • 2020-09-06
    • 2017-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多