2016-08-02 8 views
0

私はAngular2とes5で作業しています。私はサービスでhttpを使いたい。 残念ながら、私は2個のエラーがあります: を - HTTP定義されていませんが、ng.http.Httpが定義され、 - 私が主成分のため、このエラーがあります。ここではAngular2とes5のサービスにhttpを入力

vendor-client.min.js:28 EXCEPTION: Can't resolve all parameters for class0: (t, ?) 

は私のサービスコードです:

;(function(app, ng) { 
    console.log(new ng.http.Http()); 

    app.ApplicationsService = ng.core.Injectable().Class({ 
    constructor: [ng.http.Http, function(http) { 
     console.log(http); 
     this.applicationsEmailUrl = 'api/applications/email'; 
     this.http = http; 
    }], 

    emailExists: function(email) { 
     console.log(email); 
     var data = { email: email }; 
     return this.http.post(this.applicationsEmailUrl, data) 
     .toPromise() 
     .then(function(response) { response.json().data; }) 
     .catch(this.handleError); 
    } 

    }); 

})(window.app || (window.app = {}), window.ng); 
ここ

主成分である:

;(function(app, ng) { 

    app.AppComponent = ng.core 
    .Component({ 
     selector: 'register-form', 
     templateUrl: 'src/register/app.component.html' 
    }) 
    .Class({ 
     constructor: [ng.core.ElementRef, app.ApplicationsService, function(ref, Applications) { 
     console.log('app.component.js'); 
     this.programs = JSON.parse(ref.nativeElement.getAttribute('programs')); 
     this.applications = Applications; 
     }], 
     emailExists: function(email) { 
     console.log('emailExists() triggered'); 
     Applications.emailExists(email); 
     } 
    }); 

})(window.app || (window.app = {}), window.ng); 

ブートストラップ:

;(function(app, ng) { 

    document.addEventListener('DOMContentLoaded', function() { 
    ng.platformBrowserDynamic.bootstrap(app.AppComponent, [ 
     ng.forms.disableDeprecatedForms(), 
     ng.forms.provideForms(), 
     ng.http.HTTP_PROVIDERS, 
     app.ApplicationsService 
    ]); 
    }); 

})(window.app || (window.app = {}), window.ng); 

プロバイダ配列内のメインコンポーネントにhttpを挿入しようとすると、機能します。しかし、私はむしろサービスを受けることを好むでしょう。

答えて

0

私はこの問題を発見しました。 Angular2がコードを順番に読み込む必要があるようです。メインコンポーネントはサービスの前にロードされていたため、定義されていませんでした。すべてのコードを1つのファイルに入れて動作させます。私は必要なローダーをできるだけ早く使用します。

関連する問題