Angular - 在服务和组件中使用管道?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (21)

在AngularJS中,我能够使用类似于以下语法的服务和控制器内部的过滤器(管道):

$filter('date')(myDate, 'yyyy-MM-dd');

在这样的服务/组件中是否可以使用管道的角度?

提问于
用户回答回答于

像往常一样在Angular中,你可以依赖依赖注入:

import { DatePipe } from '@angular/common';
class MyService {

  constructor(private datePipe: DatePipe) {}

  transformDate(date) {
    this.datePipe.transform(myDate, 'yyyy-MM-dd');
  }
}

添加DatePipe到您的模块提供商列表中; 如果你忘记这么做,你会得到一个错误no provider for DatePipe

providers: [DatePipe,...] 

不过要注意的DatePipe是,直到第5版才依赖Intl API,所有浏览器都不支持(查看兼容性表)。

如果使用的是旧版Angular版本,则应该将Intlpolyfill 添加到您的项目中以避免任何问题。

用户回答回答于

应该能够直接使用这个类。

new DatePipe().transform(myDate, 'yyyy-MM-dd');

例如

var raw = new Date(2015, 1, 12);
var formatted = new DatePipe().transform(raw, 'yyyy-MM-dd');
expect(formatted).toEqual('2015-02-12');

扫码关注云+社区