直到angular2.beta15(包括),以下代码都可以正常工作:

@Pipe({
  name: 'isoDate'
})
export class ISODatePipe extends DatePipe implements PipeTransform {
  transform(isoDate: string, args: any[]): string {
    return super.transform(new Date(isoDate), args);
  }
}

在RC1上,即使我调整了管道语法,它也不再起作用:

@Pipe({
  name: 'isoDate'
})
export class ISODatePipe extends DatePipe implements PipeTransform {
  transform(isoDate: string, pattern?: string): string {
    const date = new Date(isoDate);
    return super.transform(date, pattern);
  }
}

我在浏览器中看到的消息如下:The pipe 'isoDate' could not be found

如果我删除了extends部分并返回了一些字符串,它将再次起作用。

发生了什么变化?

P.S.

目前已将其更改为

@Pipe({ name: 'isoDate' })
export class ISODatePipe implements PipeTransform {
  private datePipe: DatePipe = new DatePipe();

  transform(isoDate: string, pattern?: string): string {
    const date = new Date(isoDate);
    return this.datePipe.transform(date, pattern);
  }
}

它可以工作,但看起来有点奇怪。

最佳答案

发生了什么变化?

显然,DatePipe类现在具有构造函数
constructor(@Inject(LOCALE_ID) private _locale: string) {}因此您可以将 LOCALE_ID 作为参数传递:

const datePipe = new DatePipe();

编译时,指定本地ngc --locale=en-US LOCAL_ID将传递给DatePipe构造函数。

关于angular - 如何扩展angular2 DatePipe,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37032560/

10-08 23:05