服务中的角度注入管

时间:2018-02-23 16:16:04

标签: angular dependency-injection

我为格式化数据创建了以下服务。该服务从角度组件调用,guest.vo.ts返回已处理的数据

guest.vo.ts

import { Guest } from '../core/guest/guest.model';
import { TimeAgoPipe } from 'angular2-moment/time-ago.pipe';
import { Injectable } from '@angular/core';

@Injectable()
export default class GuestVO {
  constructor(private timeAgo: TimeAgoPipe) {}
  getVO(guests: Guest[]) {
    return guests.map(guest => {
      let vo: any = {};
      vo.created = this.timeAgo.transform(guest.created);
      return vo;
    });
  }
}

我使用以下库进行时间计算 https://github.com/urish/angular2-moment/blob/master/src/time-ago.pipe.ts

但是,我在服务中注入TimeAgoPipe时遇到错误,因为它取决于ChangeDetectorRef。
如果我直接在Component中使用TimeAgoPipe,则不会出现此问题。 有关使用此管道的任何建议吗?

constructor(
    private cdRef: ChangeDetectorRef, 
    private ngZone: NgZone) {
}

1 个答案:

答案 0 :(得分:0)

管道 -s不可注入。您只需将其添加到模块的declarations中即可使用它。如果要注入管道,可以将其作为

之类的服务提供
{ provide: MyPipe, useClass: TimeAgoPipe }

并将其实例注入MyPipe