如何在Typescript中在运行时添加属性

时间:2015-10-24 18:56:56

标签: typescript

我的代码有效:

 if ((<any>this.router).userIntendedRedirectRoute) {
        this.router.navigate((<any>this.router).userIntendedRedirectRoute);
    } else {
        this.router.navigateBack(); 
    }

基本上,在早期的代码中,我向路由器添加了一个属性,然后为它赋值。

然后,我检索该值。

它可以工作,但是多次投射似乎很粗糙。

我试图解决的问题是路由器来自框架,我无法直接更改源。

2 个答案:

答案 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();
}