在AngularJS中,我能够使用类似于此的语法在服务和控制器内部使用过滤器(管道):
$filter('date')(myDate, 'yyyy-MM-dd');
Run Code Online (Sandbox Code Playgroud)
是否可以在Angular中使用像这样的服务/组件中的管道?
我尝试在我的服务中使用 DatePipe,如下所示:
import { Injectable } from '@angular/core';
import { DatePipe } from '@angular/common';
import { TranslateService } from '@ngx-translate/core';
@Injectable({
providedIn: 'root',
})
export class BaseService {
public items = [];
constructor(
protected datePipe: DatePipe,
protected translateService: TranslateService
) { }
}
Run Code Online (Sandbox Code Playgroud)
但我收到此错误:NullInjectorError: No provider for DatePipe!"
. 原因是什么?
我认为,如果A.module
导入B.module
再B.module
导入C.module
,那就是A.module
导入C.module
。这就是许多 Angular 开发人员构建名为 的公共模块的原因Shared.module
。
然而,这条规则看起来并不适用于DatePipe
. 我构建了一个Shared.module
,CommonModule
在这个模块中导入和导出。然后我导入Shared.module
in AppModule
. 官方文件告诉我它DatePipe
属于CommonModule
.
不幸的是,浏览器控制台显示错误:NullInjectorError: "StaticInjectorError(AppModule)[AppComponent -> DatePipe]:
您可以在下面的链接中看到代码。
https://stackblitz.com/edit/angular-common-datepipe?embed=1&file=src/app/app.component.ts
谁能帮我解决这个问题?