-1

我有这个代码:

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 ;

我想检查当前 URL 是否等于/login,否则"/login"在构造函数中重定向到。我尝试使用 window.location.href 执行此操作,但它不起作用,因为 URL 可能没有改变?

4

1 回答 1

1

根据您的构造函数代码,您永远不会设置this.router任何内容,因此它将始终为undefined. 默认情况下,当您将参数传递给构造函数时,它不会成为this. 您应该将代码更改为:

constructor(router: Router) {
    console.log(router.url);
}

或者,如果你真的想使用this.router(例如,如果你想在同一个类的其他函数中使用路由器),你可以在声明参数时使用publicorprivate关键字:

constructor(private router: Router) {
    console.log(this.router.url);
}
于 2017-02-20T12:48:10.797 回答