私はカスタムパイプとディレクティブを持っています。私はサービスを作成しました。これはこれを処理する必要があります。 私は次のエラーを取得する:パイプでサービスするプロバイダがありません
@Injectable()
export class MyService {
private data: any;
get Data():any {
return this.data;
}
set Data(d: any) {
this.data = d;
}
}
ディレクティブはサービスを提供する必要があります:
@Directive({
selector: '[my-directive]',
providers: [MyService],
})
export class MyDirective {
constructor(private serv: MyService) {}
}
使用する場合、パイプは、同様のサービスを取得する必要が
Error: No provider for MyService
ここではコードです同じコンポーネントに:
@Pipe({
name: 'myPipe'
})
export class MyPipe {
constructor(private serv: MyService) {}
transform(value: any) {
return value + 'foo';
}
}
これは次のように入力に例えば使用されています。
<input [value]="text | myPipe" my-directive />
私はDIにangular2ドキュメントを読んで、このトピックで検索した後、私は私が間違っていた何かを見つけることができませんでした。私が知る限り、これはうまくいくはずです。どのようなアイデアはなぜですか?
PS:Ionic2
残念ながら、他の人が使用する第三者指令を作成しようとしているため、残念ながらそれはできません。したがって、私はこのディレクティブが使用されるコンポーネントにアクセスすることはできません。 – zolipapa
この場合、MyModule.forRootのモジュール定義にプロバイダを追加する必要があります。 –