Angular 使用依赖于另一个服务中的服务的管道
在服务a中,我需要使用管道p。管道p需要服务B才能工作。到目前为止,我所做的是: 我的p管道定义Angular 使用依赖于另一个服务中的服务的管道,angular,dependency-injection,angular-services,angular-pipe,Angular,Dependency Injection,Angular Services,Angular Pipe,在服务a中,我需要使用管道p。管道p需要服务B才能工作。到目前为止,我所做的是: 我的p管道定义 export class PPipe implements PipeTransform { constructor(private aService: AService) {} transform(value:number) : string { return number.toString(); } } 我如何在我的服务中使用它B @Injectable() export
export class PPipe implements PipeTransform {
constructor(private aService: AService) {}
transform(value:number) : string {
return number.toString();
}
}
我如何在我的服务中使用它B
@Injectable()
export class BService {
pPipe = new PPipe();
myFn() {
const nbToStr = pPipe.transform(69);
}
}
但我在生成时遇到一个错误:应为1个参数,但得到0。
每次我想使用PPipe时,是否需要传递它的实例?如果是这样,如何从HTML模板中实现它
感谢您的帮助您需要注入管道。 如果你自己用
new
创建一些东西,Angulars DI就没有办法进行交互
export class BService {
constructor(private pPipe:PPipe) {}
这样,Angular将创建一个
PPipe
实例,并将依赖项传递给其构造函数。另一个答案解释道,可以通过将管道公开为提供者(默认情况下它不是提供者)并将其作为任何其他服务注入来解决。这样,a服务
将通过角式喷油器注入p管道
手动使用管道transform
的唯一正确情况是,管道是第三方的,并且包含仅在管道类中可用的有用代码(例如,角度内置管道)
如果管道是第一方,正确的处理方法是不要调用管道
transform
,而是直接在BService
中使用AService
。管道必须进行重构,使其尽可能纤细,而AService
包含重用管道功能所需的所有代码。构建成功,但随后我进入了JS控制台没有PPipe提供程序
,我是否需要将sthg添加到我的BService
?确保您的管道具有@pipe({name:…})
装饰器,并且它列在模块声明中:[…]
我将其添加到模块的提供程序
数组中,并且它工作正常;)很高兴听到。