2015-11-17 29 views
6

Aşağıdaki fabrikayı bir TypeScript koduna nasıl yazabilirim diye merak ediyorum. Şimdiye kadar aşağıdaki denedimTypeScript + AngularJS v1: Açısal fabrikayı TypeScript'e yeniden yazıyor

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

: İşte asıl kodudur

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()); 

Ama aşağıdaki hatayı alıyorum:

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

Herhangi bir fikir? 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); 

:

cevap

2

Bu sözdizimini kullanın

Bu benim $http aramaları önünü kullanmak snippet'tir (şimdiye öyle benim için iş)

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

Çalışır, ancak bana başka hata atıyor: "TypeError: okuma özelliği tanımsız bir 'reddetmek' Can not". Herhangi bir fikir? Ben hata ayıklama, bu okur. $ Q responseError – uksz

+0

içinde undefined olarak yanıtımı genişletmek için kullandığım bir snippet ile genişletilmiş $ http –

+1

Çekicilik gibi çalışır! <3 – uksz