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