我有一个自定义管道和一个指令,我想分享一些数据。我创建了一个服务,应该处理这个。 我收到以下错误:没有提供管道服务
Error: No provider for MyService
下面的代码:
@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) {}
}
管道应该得到的服务,以及在使用时在相同的组件上:
@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:使用角速度2.x的与Ionic2
不幸的是,我不能这样做,因为我正在尝试构建其他人将要使用的第三方指令。所以我无法访问该指令将要使用的组件。 – zolipapa
在这种情况下,您需要将提供程序添加到MyModule.forRoot中的模块定义中。 –