Angularjs + Typescript,如何将 $routeParams 与 IRouteParamsService 一起使用
Posted
技术标签:
【中文标题】Angularjs + Typescript,如何将 $routeParams 与 IRouteParamsService 一起使用【英文标题】:Angularjs + Typescript, How to use $routeParams with IRouteParamsService 【发布时间】:2014-08-10 12:57:42 【问题描述】:我正在使用 $routeParams 从 URI 中提取属性并将本地变量设置为它们。
当我使用打字稿键入来设置 $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;
这有一个错误:属性 'property1 在 ng.route.IRouteParamsService 的类型上不存在'
如果我将 $routeParams 的类型更改为 :any 那么它会正确设置 property1。 如何在仍然访问 $routeParams 中的属性的同时保持 Typescript 的严格类型?
【问题讨论】:
【参考方案1】:想通了。您需要声明一个使用 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");
注意控制器构造函数的变化。
【讨论】:
【参考方案2】:您可以使用$routeParams['property1']
代替$routeParams.property1
【讨论】:
以上是关于Angularjs + Typescript,如何将 $routeParams 与 IRouteParamsService 一起使用的主要内容,如果未能解决你的问题,请参考以下文章
Angularjs + Typescript,如何将 $routeParams 与 IRouteParamsService 一起使用
如何使用 TypeScript 编写 AngularJS 的 Controller
如何使用具有构造函数参数的 TypeScript 类定义 AngularJS 工厂
使用 AngularJS 的 typescript 时如何在反引号中获取 html/css snipits
使用 TypeScript 和注入的 AngularJS 过滤器
Karma + Jasmine 下 angular.mock.inject 的 TypeScript AngularJS 控制器测试问题