如何扩展angular2 DatePipe

Val*_*sin 10 typescript angular

高达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);
  }
}
Run Code Online (Sandbox Code Playgroud)

在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);
  }
}
Run Code Online (Sandbox Code Playgroud)

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

如果我删除extends部分并返回一些字符串 - 它再次起作用.

发生了什么变化?

PS

目前已将其更改为

@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);
  }
}
Run Code Online (Sandbox Code Playgroud)

它有效,但看起来有点奇怪.

Fao*_*ouh 4

发生了什么变化?

显然 DatePipe 类现在有构造函数

constructor(@Inject(LOCALE_ID) private _locale: string) {} 所以你可以传递LOCALE_ID作为参数:

const datePipe = new DatePipe();
Run Code Online (Sandbox Code Playgroud)

当您编译时指定 local ngc --locale=en-USLOCAL_ID 被传递给DatePipe构造函数。