J'ai un tuyau personnalisé et une directive que je voudrais partager certaines données. J'ai créé un service, qui devrait gérer cela. Je reçois l'erreur suivante:Aucun fournisseur pour le service dans le tuyau
Error: No provider for MyService
Voici le code:
@Injectable()
export class MyService {
private data: any;
get Data():any {
return this.data;
}
set Data(d: any) {
this.data = d;
}
}
La directive devrait fournir le service:
@Directive({
selector: '[my-directive]',
providers: [MyService],
})
export class MyDirective {
constructor(private serv: MyService) {}
}
Le tuyau doit obtenir le service aussi bien, quand il est utilisé sur le même composant:
@Pipe({
name: 'myPipe'
})
export class MyPipe {
constructor(private serv: MyService) {}
transform(value: any) {
return value + 'foo';
}
}
C'est utilisé par exemple sur une entrée comme ceci:
<input [value]="text | myPipe" my-directive />
Après avoir lu les documents sur angular2 DI, et cherchai à ce sujet, je ne pouvais pas trouver quelque chose que je fait de mal. Autant que je sache, cela devrait fonctionner. Des idées pourquoi pas?
ps: Utilisation 2.x angulaire Ionic2
Malheureusement, je ne peux pas faire cela, parce que j'essaie de créer une directive tierce que quelqu'un d'autre va utiliser. Je n'ai donc pas accès au composant sur lequel cette directive va être utilisée. – zolipapa
Dans ce cas, vous devez ajouter le fournisseur dans votre définition de module dans MyModule.forRoot. –