Javascript 如何检查上一页url是否符合条件?

Javascript 如何检查上一页url是否符合条件?,javascript,html,angular,typescript,Javascript,Html,Angular,Typescript,我正在使用Angular,我几乎用下面的代码获得了上一页的链接URL this.router.events .pipe(filter((evt: any) => evt instanceof RoutesRecognized), pairwise()) .subscribe((events: RoutesRecognized[]) => { console.log('previous url', events[0].urlAfterRedirects); console.lo

我正在使用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);
});
我得到了上一页的链接url

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

我试着像下面的代码,如果条件

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

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

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的信息,请访问:

回到问题上来

但是我想在这个页面的其他地方使用这个条件,那么有没有办法存储在var中并生成if条件呢

为什么不能在
subscribe
块之外获得
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.
  }
}

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