我正在尝试捆绑一个Angular2应用,刚刚更新到RC6,基于this excellent blog post.
我有一个只包装内置DatePipe的管道,区别在于它接受一个null参数,并在收到它的情况下执行某些操作。对于RC6,必须更新以将_locale
参数传递给DatePipe。这是管道:
import {Pipe, PipeTransform, Inject, LOCALE_ID} from '@angular/core';
import {DatePipe} from '@angular/common';
@Pipe({
name: 'myDate',
})
export class MyDatePipe implements PipeTransform {
constructor(@Inject(LOCALE_ID) private _locale: string){}
transform(value: any, pattern?: string): string {
if (value === null) {
return 'Not Available';
}
return new DatePipe(this._locale).transform(value, pattern);
}
}
这种依赖注入方法与one used by the built-in DatePipe (best I can tell).
相同编译开发并加载systemjs时,这很好用。但是在捆绑汇总后,_locale
在传递给构造函数时为null
。捆绑中的实例化如下所示:
this._pipe_myDate_0 = new MyDatePipe(this.parentInjector.get(LOCALE_ID));
// this.parentInjector.get(LOCALE_ID) == null
我可以提供汇总配置和tsconfigs,如果这有用 - 但暂时不会,因为它会增加大量的问题。捆绑过程现在是:
ngc(es2015) -> rollup(es2015) -> tsc(es5)
应用程序的其余部分工作得很好!我现在通过直接将'en-US'
传递给DatePipe解决了这个问题,但我很好奇为什么它不起作用,而且我想要正确地做到这一点。
答案 0 :(得分:1)
为每个区域设置编译:
ngc --locale=en-US