2015-12-30 26 views
5

Ho un angolo di lavoro2 Componen t. Ho implementato una classe per alcuni servizi (utilizzando ng.core.Class se ciò è importante). Quali sono i passaggi minimi per iniettare il mio servizio sul mio Component? Dovrei includere il mio servizio nella funzione bootstrap? Devo usare uno qualsiasi di ng.core.Inject o ng.core.Injectable? Tutti i miei esperimenti non sono riusciti finora.Come iniettare il servizio personalizzato su componente angolare in ES5 semplice (Javascript)?

+0

mi riferisco alla attuale versione beta di angular2 in questa questione. –

risposta

12

Si può fare molto semplice. Basta creare una classe di farlo passare attraverso providers proprietà o attraverso bootstrap

Per esempio

// 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'); 
} 

poi passarlo al componente

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

o tramite bootstrap

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

Ecco un example quindi puoi prendere uno sguardo a questo.

Riferimento

  • Class (potete trovare alcuni esempi di utilizzo nei commenti)
+0

Grazie. Funziona in questo modo. La ragione per cui * not * ha funzionato per me è che stavo cercando di riferirmi a 'Service' prima di averlo creato. Quindi l'ordine di caricamento dei file js è importante con tale approccio. –

+0

@ SergeyP.akaazure puoi accettare la risposta se risponde alla tua domanda? –

+0

e se ho bisogno di usare due servizi ?? come posso specificarlo nel costruttore? –