如何从Angular 2中的observable提供LOCALE_ID?

时间:2017-02-03 14:19:03

标签: angular angular2-providers

在Angular 2中,为了本地化日期管道,您需要提供LOCALE_ID。我有一个服务LocaleService,它公开了实现locale$: Observable<string>的{​​{1}}。我不想在此服务中添加任何状态,我希望它完全被动。提供BehaviorSubject<string>时如何从此服务获取信息?

2 个答案:

答案 0 :(得分:1)

如果您想为应用设置一次语言,那么使用LOCALE_ID的解决方案非常棒。但是如果你想在运行时更改语言,它就不起作用。请参阅我的回答here

答案 1 :(得分:0)

管道可以返回Observable。

import { Pipe, PipeTransform } from '@angular/core';
import { LocaleService } from 'shared/locale.service';
import { Observable } from 'rxjs/Observable';
import { formatDate } from 'somelibrary';
import 'rxjs/add/operator/map';

@Pipe({
  name: 'myDate',
  pure: false
})
export class MyDatePipe implements PipeTransform {

  constructor(private localeService: LocaleService) { }

  transform(date: string): Observable<String> {
    return this.localeService.locale$.map(locale => formatDate(date, locale));
  }
}