我正在尝试使用Angular中的基本if
条件在页面之间进行路由。
GoToHome() {
if(this.router.url=='/chat'){
console.log(this.router.url)
this.router.navigate(['login']);
} else {
this.router.navigate(['people']);
}
}
问题是路由聊天不是真的正确,聊天中有很多页面(chat \ x,chat \ y等),我希望它对聊天中的所有页面都有效,但是现在它不起作用。如果我写了诸如chat \ x之类的特定路由,它确实起作用,但仅适用于x。有办法做到全部吗?
答案 0 :(得分:0)
您可以阅读并检查Guards。了解有关CanActivate方法的信息,也许会对您有所帮助?
答案 1 :(得分:0)
RouteGuard可以根据您的要求更好地处理重定向。
但是一种快速的解决方法是在URL上进行split()
并比较chat
部分。尝试以下
if(((this.router.url).split('/')[1]) === 'chat') {
// proceed
}
答案 2 :(得分:0)
正如其他人所说,最好的解决方案是使用Angular Guard https://medium.com/@ryanchenkie_40935/angular-authentication-using-route-guards-bf7a4ca13ae3。
无论如何要解决问题,都可以使用 startsWith()函数,该函数确定字符串是否以指定字符串的字符开头。
GoToHome() {
if((this.router.url).startsWith('/chat'){
console.log(this.router.url)
this.router.navigate(['login']);
} else {
this.router.navigate(['people']);
}
}