直到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/