J'ai une classe comme suit qui n'est pas annotée avec @Injectable
export class A extends B {
calculateTotal(): number {
//Implementation
}
}
La fonction ci-dessus CalculateTotal doit utiliser unservice annoté avec @Injectable pour pouvoir obtenir des valeurs permettant d’effectuer certains totaux. La question est: est-il correct d'utiliser ce service dans cette classe?
Ashley
Réponses:
1 pour la réponse № 1Il y a différentes façons d'en obtenir un SomeService
exemple injecté dans class A
. Celui que j'utilise par exemple dans Ionic 2 est:
- si la classe A peut être un composant, ajoutez le
@Component
décorateur à sa définition et laproviders
métadonnées à elle; - importer la définition de service dans le
class A
fichier de définition; - ajouter une méthode constructeur à
class A
et déclarer une instance de service en tant qu'argument.
Par exemple, en supposant que la classe de service est nommée SomeService
et est défini dans le fichier some.service.ts
dans le même répertoire que le fichier source actuel:
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
}
}
Plus d'informations sont disponibles dans les docs officiels.