Je reçois un J'ai suivi Pascal Guide d'injecter un service dans un service et cela a fonctionné lorsque j'ai injecté le service Je peux injecter les deux fournisseurs individuellement en supprimant l'injection du login-page.ts strong> p> userservice strong> p> Firebaservice strong> p> < Pré> xxx pré> p> Aucun fournisseur de Firebaservice CODE> ERREUR Même après la démarrage du
Firebaservice CODE> dans le
BOOTSTRAP (App, [fournisseurs]) code> Méthode .
http code> avec le
http_providers code> bootstrapped, mais je reçois un
aucun fournisseur de Firebaservice Code> Erreur après la modification de mon propre service. P>
Firebaservice Code>.
Même si je fais
rétroducteur (@Inject (Firebaservice) Firebase: Firebaservice) {} Code> Cela ne fonctionnera pas, mais ma compréhension est que l'ajout du décorateur
@Ijejejej.j. / code> doit avoir le même effet. p>
3 Réponses :
Vous n'ate pas userservice code> dans
main.ts code>. Essayez d'ajouter cela aussi:
import { bootstrap } from '@angular/platform-browser-dynamic';
import { PLATFORM_DIRECTIVES, provide } from '@angular/core';
import { AppComponent } from './app.component';
import { ROUTER_DIRECTIVES, ROUTER_PROVIDERS } from '@angular/router';
import { UxButton, UxText } from './export';
import { FirebaseService } from './SERVICES/firebase.service';
import { UserService } from './SERVICES/user.service';
bootstrap(AppComponent, [
FirebaseService,
UserService //<-- add this
,ROUTER_DIRECTIVES
,ROUTER_PROVIDERS
,provide(PLATFORM_DIRECTIVES, {useValue: UxButton, multi: true})
,provide(PLATFORM_DIRECTIVES, {useValue: UxText, multi: true})
]);
J'ai déjà essayé cela sans succès. Je ne veux pas d'instance singleton pour userservice, uniquement pour l'instance Firebase. Ce n'est jamais un problème auparavant.
J'ai fait pluck et cela fonctionne et injecte le service Firebase au service des utilisateurs.
main.ts p> app.ts p> user.service.ts p> import {Injectable} from '@angular/core'
@Injectable()
export class FirebaseService {
public get(path: string): any {
console.log(path);
}
public set(objectToSave: any) {
console.log(objectToSave);
}
}
Je pense que cette réponse n'est plus valide à partir de l'angulaire2 RC6
@Paveleapehin C'est parce que cette réponse a été écrite avant l'introduction du concept de modules. La nouvelle façon de le faire est de simplement fournir les services nécessaires dans le module approprié (tel que le module racine) et une instance de service Singleton sera disponible dans toute l'application.
@Dyna, merci. Ce n'est pas si évident où regarder dans l'extrait de code relativement grand.
Je viens d'apprendre que les chemins d'instruction d'importation sont sensibles à la casse. P>
J'ai eu Où est l'emoji facepalm? p> importer {userservice} de '../../ services / user.service'; code> pendant que le répertoire était
../../ services / user.service < / code>. p>
Mec, tu as sauvé ma journée. C'est tellement stupide, mon dossier était "Authentification", donc mon énoncé d'importation généré a été généré "../authentication/", tellement changé en "../authentication/" et tout a fonctionné. Peut-être que bonne solution est de ne pas mettre les capuchons dans les noms de fichiers et les noms de dossiers. Je suis un débutant apprenant les astuces
Pour référence, le référentiel complet est ici: Github.com/chuckknorris/ng2rct