如何在角度2的自定义管道中使用服务

时间:2017-07-04 09:28:39

标签: angular2-services angular2-pipe

我想在html上显示几年的月份。我的过滤器需要几个月作为输入,它应该返回几年。

例如:如果输入为12,则应将翻译后的值返回为1年。如果超过1年,则应返回“2年”。

我的烟斗包含:

import { Pipe, PipeTransform} from '@angular/core';

@Pipe({name : 'displayMonthsInYears '})
export class DisplayMonthsInYears implements PipeTransform{
    transform(noOfMonths : number) : any {
         if(noOfMonths > 12){
            return (noOfMonths / 12 + $translate.instace('YEARS'));
         }
         return (noOfMonths / 12 + $translate.instace('YEAR'));
    }
}

和html是:

 <div class="text-left">
     {{ contractDuration | displayMonthsInYears }}
 </div>

我不知道如何实现这一目标。请帮忙。

1 个答案:

答案 0 :(得分:3)

使用

安装翻译库及其http-loader
negpks

按照npm install @ngx-translate/core @ngx-translate/http-loader --save 文档中的设置指南进行操作。然后导入服务:

@ngx-translate

将其注入管道并按如下方式使用:

import {TranslateService} from '@ngx-translate/core';

@Pipe({name : 'displayMonthsInYears '}) export class DisplayMonthsInYears implements PipeTransform{ constructor(private translate: TranslateService) {} transform(noOfMonths : number) : any { if (noOfMonths > 12) { return (noOfMonths / 12 + this.translate.instant('YEARS')); } return (noOfMonths / 12 + this.translate.instant('YEAR')); } } 会立即返回该值,还有一些有用的值,例如instant,它会为您提供一个可观察的值,即使语言发生变化,它也会将值继续传输到您的订阅。哪个stream赢了。您可以使用更多方法,因此我建议您查看文档并了解哪种方法最适合您。