2016-08-08 4 views
0

私は角度経路を使用しています。 に基づいてthis question私はURLパラメータを取得しようとしました。AngularJS Typescript IRouteParamsService undefined

次のエラーが発生します。 angular.js:13920 TypeError: Cannot read property 'zvar' of undefined $routeParamsは未定義です。

マイルーティングの設定: angular.module('app').config(['$routeProvider', function routes($routeProvider: ng.route.IRouteProvider) { $routeProvider .when('/', { templateUrl: 'views/start.html', }) .when('/calc/:zvar?', { templateUrl: 'views/calc.html', controller: 'app.controllers.calcCtrl' }) .otherwise({ redirectTo: '/' }); } ]);

マイURL:http://localhost:64025/#/calc?zvar=test123

コンストラクタでのアクセス:

interface IRouteParams extends ng.route.IRouteParamsService { 
     zvar: string; 
    } 
export class calcCtrl implements IController { 
     static $inject: string[] = ['$routeParams']; 
     constructor(private $routeParams: IRouteParams) { 
      this.zvar = $routeParams.zvar; 
      console.log("Calc Controller: " + this.zvar); 
     } 
     zvar: string; 
    } 

全活字体コード:http://codepen.io/alexmallinger/pen/qNQRGJ

EDIT:追加した行static $inject: string[] = ['$routeParams'];私のコードに

答えて

1

$routeParamsサービスを注入する必要があります。これには$inject property annotationを使用できます。

export class calcCtrl implements IController { 
    static $inject:string[] = ['$routeParams']; 
    constructor(private $routeParams: IRouteParams) { 
     ... 
    } 
} 
+0

コントローラーは登録されていますか? –

+0

はい。 ここで完全なTypescriptコードをアップロードしました:http://codepen.io/alexmallinger/pen/qNQRGJ –

+0

'サービス'配列なしでコントローラを登録しようとします:angular.module( 'app.controllers')。controller(controller、app .controllers [className]); ' –

関連する問題