2015-12-30 17 views
5

Ich habe ein funktionierendes angular2 Componen t. Ich habe eine Klasse für einen Dienst implementiert (mit ng.core.Class, wenn das wichtig ist). Was sind die minimalen Schritte, um meinen Dienst zu meinem Component zu injizieren? Soll ich meinen Service in die Bootstrap-Funktion einbinden? Sollte ich eine der ng.core.Inject oder ng.core.Injectable? verwenden Alle meine Experimente gescheitert bisher.Wie injiziere ich benutzerdefinierte Service zu eckigen Komponente in einfachen ES5 (Javascript)?

+0

ich aktuelle Beta-Version von angular2 in dieser Frage beziehen (können Sie einige Beispiele für seine Verwendung in den Kommentaren finden). –

Antwort

12

Sie können es sehr einfach tun. Nur eine Klasse erstellen, ein es durch providers Eigenschaft Pass oder durch bootstrap

Zum Beispiel

// Alternative 1 
var Service = ng.core.Class({ 
    constructor : function() {}, 
    someFunction : function() { 
    console.log('Some function'); 
    } 
}) 

// Alternative 2 
var Service = function() {} 
Service.prototype.someFunction = function() { 
    console.log('Some function'); 
} 

Dann ist es an die Komponente zu übergeben

var Component = ng.core. 
     Component({ 
     selector: 'cmp', 
     template : '', 
     providers : [Service] 
     }). 
     Class({ 
     constructor: [Service, function(svc) { 
      svc.someFunction(); 
     }] 
     }); 

Oder durch Bootstrap

ng.platform.browser.bootstrap(Component, [Service]); 

Hier ein example so können Sie nehmen ein Blick darauf.

Referenz

+0

Danke. Es funktioniert so. Der Grund, warum es für mich nicht funktionierte, war, dass ich versuchte, auf "Service" zu verweisen, bevor ich es erstellte. Daher ist die Reihenfolge des Ladens von js-Dateien bei einem solchen Ansatz wichtig. –

+0

@ SergeyP.akaazure können Sie bitte die Antwort akzeptieren, wenn es Ihre Frage beantwortet? –

+0

Was ist, wenn ich zwei Dienste verwenden muss? Wie kann ich das im Konstruktor angeben? –