2014-06-19 10 views
9

Używam $ routeParams do pobierania właściwości z identyfikatora URI i ustawiania dla nich lokalnych zmiennych.

Kiedy używam maszynopisu do ustawienia typu $ routeParams, nie mogę logować się do $ routeParams.

Jak mogę uzyskać dostęp do właściwości w $ 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"); 
    } 

}

Kod ng.route.IRouteParamsService jest:

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

Ma to błąd: własność 'property1 nie istnieje na rodzaj ng.route.IRouteParamsService'

Jeśli zmienię typ $ routeParams na: any, to poprawnie ustawi właściwość1. Jak mogę zachować ścisłe wpisywanie maszynopisu przy jednoczesnym zachowaniu właściwości w $ routeParams?

Odpowiedz

23

Wyliczyłem to. Musisz zadeklarować interfejs, który używa usługi IRouteParamsService i określa właściwości, których chcesz użyć.

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

Zawiadomienie o zmianie w kontrrodzie regulatora.

2

Można użyć $routeParams['property1'] zamiast $routeParams.property1

Powiązane problemy