2015-11-17 2 views
6

次のファクトリをTypeScriptコードに書き換えるにはどうすればいいですか?ここでは、元のコードは次のとおりです。TypeScript + AngularJS v1:角度ファクトリをTypeScriptに書き換える

export class errorInterceptor { 
    constructor(private $q:ng.IQService) { 

    } 

    public responseError(response:any){ 
     console.error("Error: " + response.statusText); 

     return this.$q.reject(response); 
    } 

    public static getFactory(){ 
     return errorInterceptor; 
    } 
} 

app.factory('errorInterceptor',errorInterceptor.getFactory()); 

しかし、私は次のエラーを取得する:

app.factory('errorInterceptor', function ($q) { 
    return { 
     responseError: function (response) { 
      console.error("Error: " + response.statusText); 
      return $q.reject(response); 
     } 
    } 
}); 

これまでのところ、私は次のことを試してみた

Provider 'errorInterceptor' must return a value from $get factory method. 

任意のアイデア? EXTEND

export class errorInterceptor { 
    // to support minification 
    static $inject = ["$q"]; 

    constructor(private $q:ng.IQService) { 

    } 

    public responseError(response:any){ 
     console.error("Error: " + response.statusText); 

     return this.$q.reject(response); 
    } 

    //public static getFactory(){ 
    // return errorInterceptor; 
    //} 
} 

//app.factory('errorInterceptor',errorInterceptor.getFactory()); 
app.service('errorInterceptor',errorInterceptor); 

答えて

2

私はこの構文を使用

は、これは私が$http呼び出しをインターセプトするために使用するスニペットです(のでそれがない私にとって仕事)

module MyModule 
{ 
    var app = angular.module("MyModule"); 

    export class HttpErrorAspect 
    { 
     static $inject = ["$q"]; 

     constructor(private $q: ng.IQService) 
     { 
     } 

     public responseError = (rejection: any): any => 
     { 
      // do some magic, e.g. use toaster or alerter 
      // to notify about the issue 
      ... 

      // reject that all 
      return this.$q.reject(rejection); 
     } 
    } 

    app.service("HttpErrorFilter", MyModule.HttpErrorAspect); 
} 
+0

それは動作しますが、私は別のエラースロー: "例外TypeError:プロパティを読み取ることができません未定義の '拒否' を"。何か案が?私がデバッグすると、これが読み取られます。$ qはresponseError内で未定義です – uksz

+0

私は$ httpを傍受するスニペットで自分の答えを拡張しました –

+1

魅力的な作品です! <3 – uksz

関連する問題