/ / ist es möglich, in Angular 2+ - angular einen Service in eine Typosklasse zu verwenden

ist es möglich, in Angular 2+ - angular einen Service in eine Typoskriptklasse zu verwenden

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 № 1

Es 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 der providers 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.