1

我正在尝试捆绑一个刚刚更新到 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 捆绑之后,_localenull传递给构造函数的时候。包中的实例化如下所示:

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 来解决这个问题,但我很好奇它为什么不起作用,我想正确地做到这一点。

4

1 回答 1

1

为每个语言环境编译:

ngc --locale=en-US
于 2016-10-05T12:04:25.473 回答