Недавно у меня была возможность создать свой первый пользовательский Angular2 Pipe. Документация angular, хотя и очень полезна, может быть немного сложной для навигации, поэтому я подумал, что воспользуюсь этой возможностью, чтобы написать быстрый пример того, как создать собственный класс конвейера, как внедрить его в свой компонент и как использовать это в ваших HTML-шаблонах.

В приведенном ниже примере показан канал, который принимает строковый оператор и форматирует его в TitleCase (также известный как ProperCase). Используя эту трубу, строка «Нью-Йорк» преобразуется в «Нью-Йорк».

app / pipe / title-case.pipe.ts

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

@Pipe({name: 'titleCase'})
export class TitleCasePipe implements PipeTransform {
    public transform(input:string): string{
        if (!input) {
            return '';
        } else {
            return input.replace(/\w\S*/g, (txt => txt[0].toUpperCase() + txt.substr(1).toLowerCase() ));
        }
    }
    
}

app / components / my-component.component.ts

import {Component} from '@angular/core';
import {TitleCasePipe} from 'my-component.component';
@Component({
  selector: 'my-component',
  templateUrl: 'my-component.components.html',
  pipes: [TitleCasePipe,],
})
export class MyComponent {
    public somestring: string;
}

app / components / my-component.component.html

<p>{{ somestring | titleCase }}</p>

Вот и все!

Для получения дополнительной информации о каналах и angular в целом ознакомьтесь со следующими документами.