2014-06-19 19 views
9

Tôi đang sử dụng $ routeParams để lấy các thuộc tính từ URI và đặt các vars cục bộ cho chúng.

Khi tôi sử dụng gõ bảng chữ cái để đặt loại $ routeParams, tôi không thể truy cập vào $ routeParams.

Tôi làm cách nào để truy cập các thuộc tính trong $ 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"); 
    } 

}

Mã ng.route.IRouteParamsService là:

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

này có một lỗi: tài sản 'property1 không tồn tại trên loại ng.route.IRouteParamsService'

Nếu tôi thay đổi loại $ routeParams thành: bất kỳ khi nào nó đặt chính xác thuộc tính1. Làm thế nào tôi có thể tiếp tục đánh máy chặt chẽ Typecript trong khi vẫn acessing các tài sản trong $ routeParams?

Trả lời

23

Đã tìm ra. Bạn cần khai báo một Giao diện sử dụng IRouteParamsService và chỉ định các thuộc tính bạn muốn sử dụng.

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"); 
    } 
} 

Lưu ý sự thay đổi trong contructor của bộ điều khiển.

2

Bạn có thể sử dụng $routeParams['property1'] thay vì $routeParams.property1

Các vấn đề liên quan