我的代码有效:
if ((<any>this.router).userIntendedRedirectRoute) {
this.router.navigate((<any>this.router).userIntendedRedirectRoute);
} else {
this.router.navigateBack();
}
基本上,在早期的代码中,我向路由器添加了一个属性,然后为它赋值。
然后,我检索该值。
它可以工作,但是多次投射似乎很粗糙。
我试图解决的问题是路由器来自框架,我无法直接更改源。
答案 0 :(得分:3)
您可以通过方括号和属性名称获取属性值:
this.router["userIntendedRedirectRoute"]
答案 1 :(得分:0)
您应该定义路由器是什么,而不是使用any
。
interface MyRouter {
userIntendedRedirectRoute?: string;
navigate(route: string);
navigateBack();
}
if((<MyRouter>this.router).userIntendedRedirectRoute) {
(<MyRouter>this.router).navigate((<MyRouter>this.router).userIntendedRedirectRoute);
} else {
(<MyRouter>this.router).navigateBack();
}
您也可以将其转换为变量:
var myRouter: MyRouter = this.router;
if(myRouter.userIntendedRedirectRoute) {
myRouter.navigate(myRouter.userIntendedRedirectRoute);
} else {
myRouter.navigateBack();
}