我正在尝试捆绑一个刚刚更新到 RC6 的 Angular2 应用程序,大致基于这篇优秀的博客文章。
我有一个管道,它只包装内置的 DatePipe ,不同之处在于它接受一个空参数,并在它收到它的情况下做一些事情。对于 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);
}
}
这种依赖注入的方法与内置 DatePipe 使用的方法相同(我能说得最好)。
当为开发编译并加载 systemjs 时,它工作正常。但是在与 rollup 捆绑之后,_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 来解决这个问题,但我很好奇它为什么不起作用,我想正确地做到这一点。