Angularjs + Typescript,如何在IRouteParamsService中使用$ routeParams

时间:2014-06-19 20:43:36

标签: javascript angularjs typescript angularjs-routing

我使用$ routeParams从URI中提取属性并将本地变量设置为它们。

当我使用typescripts键入来设置$ routeParams的类型时,我无法访问$ routeParams。

如何访问$ routeParams中的属性?

class Controller{
    constructor($routeParams: ng.route.IRouteParamsService, private $location: ng.ILocationService)
        this.propetry1 = this.getProperty1($routeParams.property1);
    }

    property1: string;

    getProperty1(input: string):string{
        return (input || "Not present");
    }

}

ng.route.IRouteParamsService代码是:

interface IRouteParamsService {
    [key: string]: any;
}

这有一个错误:ng.route.IRouteParamsService'

的类型中不存在属性' property1

如果我将$ routeParams的类型更改为:any,则它会正确设置property1。 如何在仍然访问$ routeParams中的属性的同时保持Typescript的严格输入?

2 个答案:

答案 0 :(得分:24)

想出来。您需要声明一个使用IRouteParamsService的接口,并指定您要使用的属性。

 interface IRouteParams extends ng.route.IRouteParamsService {
    property1:string;
 }

 class Controller{
    constructor($routeParams: IRouteParams, private $location: ng.ILocationService)
        this.propetry1 = this.getProperty1($routeParams.property1);
    }

    property1: string;

    getProperty1(input: string):string{
        return (input || "Not present");
    }
}  

注意控制器构造函数的更改。

答案 1 :(得分:2)

您可以使用$routeParams['property1']代替$routeParams.property1