Jusqu'à angular2.beta15 (y compris), le code suivant fonctionnait bien:
@Pipe({ name: 'isoDate' }) export class ISODatePipe extends DatePipe implements PipeTransform { transform(isoDate: string, args: any[]): string { return super.transform(new Date(isoDate), args); } }
Sur RC1, il ne fonctionne plus, même après avoir ajusté la syntaxe des tuyaux:
@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); } }
Le message que je vois dans le navigateur suit: The pipe 'isoDate' could not be found
.
Si je supprime la partie extends
et renvoie une chaîne – elle fonctionne à nouveau.
Qu'est ce qui a changé?
PS
L'a changé pour
@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); } }
Cela fonctionne, mais il semble un peu étrange.
Qu'est ce qui a changé?
La classe DatePipe d'une valeur est désormais constructive
constructor(@Inject(LOCALE_ID) private _locale: string) {}
afin que vous puissiez passer LOCALE_ID comme paramètre:
const datePipe = new DatePipe();
Lorsque vous compilez spécifier local ngc --locale=en-US
Le LOCAL_ID est passé au constructeur DatePipe
.