1

在我看来,如果A.moduleimportB.moduleB.moduleimport C.module,那就是A.moduleimport C.module。这就是为什么许多 Angular 开发人员构建一个名为Shared.module.

但是,此规则似乎不适用于DatePipe. 我已经构建了一个Shared.moduleCommonModule在这个模块中导入和导出。然后我导入Shared.modulein AppModule。官方文件告诉我DatePipe是属于的CommonModule

不幸的是,浏览器控制台显示错误:NullInjectorError: "StaticInjectorError(AppModule)[AppComponent -> DatePipe]:

您可以在下面的链接中看到代码。

https://stackblitz.com/edit/angular-common-datepipe?embed=1&file=src/app/app.component.ts

谁能帮我解决这个问题?

4

2 回答 2

5

你说的是对的。上述原因的原因是在CommonModule中,DatePipe 没有注册为提供者。

您可以做的是在您的共享模块中添加 DatePipe 作为提供程序。

providers: [DatePipe]
于 2019-07-08T10:41:20.087 回答
2

管道在 Angular 中是不可注入的。您必须自己手动提供它们。

@NgModule({
   declarations: [AppComponent],
   providers: [DatePipe]
   // ....
{)
export class AppModule {}
于 2019-07-08T10:39:57.383 回答