2017-07-06 2 views
0

ich eine Klasse wie folgt zu verwenden, die nicht mit @Injectableist es möglich, einen Dienst in eine Typoskript Klasse in Angular 2+

export class A extends B { 

    calculateTotal(): number { 
     //Implementation 
    } 
} 

Die obige Funktion calculateTotal muss einen Dienst bezeichnet ist, die mit Anmerkungen versehen ist mit @Injectable, um einige Werte für einige Summen abrufen zu können. Frage ist: Ist es in Ordnung, diesen Dienst in dieser Klasse zu verwenden?

Ashley

+0

Ja, es ist ok und dokumentiert: https://angular.io/guide/dependency-injection. Können Sie bitte etwas Ihre Frage ausarbeiten? Es ist nicht so klar, was du verlangst. –

+0

@PaoloStefan hat meine Frage bearbeitet – ashley

Antwort

1

Es gibt verschiedene Möglichkeiten, eine SomeService Instanz in class A injiziert zu bekommen. Der, den ich verwende, z.B. in Ionic 2:

  • wenn die Klasse A eine Komponente sein kann, den @Component decorator seine Definition und die providers Metadaten zu ihm hinzufügen;
  • importieren Sie die Service-Definition in die class A Definitionsdatei;
  • Fügen Sie eine Konstruktormethode zu class A hinzu und deklarieren Sie eine Dienstinstanz als Argument.

Zum Beispiel unter der Annahme, dass die Service-Klasse SomeService benannt und wird in der Datei some.service.ts im selben Verzeichnis wie die aktuelle Quelldatei definiert:

import { Component } from '@angular/core'; 
import { SomeService } from './some.service'; 

@Component({ 
    providers: [ SomeService ] 
}) 
export class A extends B { 

    constructor(public s:SomeService){} 

    otherMethod(){ 
     this.s; // SomeService is accessible like this 
    } 
} 

Weitere Informationen sind in the official docs zur Verfügung.

Verwandte Themen