我有这段代码:
import { Router } from '@angular/router';
然后:
constructor(router: Router) {
console.log(this.router.url);
}
当我加载页面时,它会首先告诉我URL是“/”
Unhandled Promise rejection: Error in ./BaPageTop class BaPageTop - inline template:22:4 caused by: Cannot read property 'url' of undefined ;
我想检查当前网址是否等于/login
,否则会在构造函数中重定向到"/login"
。我尝试使用window.location.href这样做,但它不起作用,因为URL没有改变parhaps?
答案 0 :(得分:1)
根据您的构造函数代码,您永远不会将this.router
设置为任何内容,因此它始终为undefined
。默认情况下,将参数传递给构造函数时,它不会成为this
的属性。您应该将代码更改为:
constructor(router: Router) {
console.log(router.url);
}
或者,如果你真的想使用this.router
(例如,如果你想在同一个班级的其他功能中使用路由器),你可以使用public
或private
声明参数时的关键字:
constructor(private router: Router) {
console.log(this.router.url);
}