Ich habe eine Klasse wie folgt, die nicht mit @Injectable versehen ist
export class A extends B {
calculateTotal(): number {
//Implementation
}
}
Die obige Funktion calculateTotal muss a verwendenService, der mit @Injectable versehen ist, 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
Antworten:
1 für die Antwort № 1Es gibt verschiedene Möglichkeiten, einen zu bekommen SomeService
Instanz injiziert class A
. Der, den ich verwende, z.B. in Ionic 2 ist:
- Wenn Klasse A eine Komponente sein kann, fügen Sie die hinzu
@Component
Dekorator zu seiner Definition und derproviders
Metadaten dazu; - Importieren Sie die Service-Definition in die
class A
Definitionsdatei; - fügen Sie eine Konstruktormethode hinzu
class A
und eine Dienstinstanz als Argument deklarieren.
Angenommen, die Serviceklasse wird beispielsweise benannt SomeService
und ist in der Datei definiert some.service.ts
im selben Verzeichnis wie die aktuelle Quelldatei:
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 finden Sie in die offiziellen Dokumente.