管道中的Angular 2依赖注入

use*_*232 22 typescript angular

我如何将像服务这样的依赖项注入angular2管道?

import {Pipe, PipeTransform} from 'angular2/core';
import {MyService} from './service';

//How i am injecting MyService to the pipe?

@Pipe({name: 'exponentialStrength'})
export class ExponentialStrengthPipe implements PipeTransform {
  transform(value:number, args:string[]) : any {
    return Math.pow(value, parseInt(args[0] || '1', 10));
  }
}
Run Code Online (Sandbox Code Playgroud)

Baz*_*nga 48

您可以在构造函数中注入依赖项,如下所示:

export class ExponentialStrengthPipe implements PipeTransform {

  constructor(public testService: TestService) {

  }

  transform(value:number, args:string[]) : any {
    // you can access this.testService here
    return Math.pow(value, parseInt(args[0] || '1', 10));
  }
}
Run Code Online (Sandbox Code Playgroud)

不要忘记确保将此依赖项添加到app模块:

@NgModule({
    declarations: [...],
    imports: [...],
    providers: [..., TestService],
    bootstrap: [AppComponent],
}
Run Code Online (Sandbox Code Playgroud)

  • 我遇到了这个问题,因为我有一个服务也消耗管道(注入管道的服务是用 url 装饰的路由)。因此,在这种情况下,如果我不将 ActivatedRoute 注入到我的服务中并通过 `private prefPipe: PagePreferencesPipe = new PagePreferencesPipe(routerFromService);` 传递它,Typescript 会抛出错误,有没有办法通过注入到服务中来避免这种情况或某物? (2认同)