多個自定義管道
使用不同的管道是一種非常常見的情況,每個管道都有不同的用途。將每個管道新增到每個元件可能會成為重複的程式碼。
可以將所有常用管道繫結在一個 Module 中,並匯入任何元件中的新模組需要管道。
breaklines.ts
import { Pipe } from '@angular/core';
/**
 * pipe to convert the \r\n into <br />
 */
@Pipe({ name: 'br' })
export class BreakLine {
    transform(value: string): string {
        return value == undefined ? value : 
             value.replace(new RegExp('\r\n', 'g'), '<br />')
              .replace(new RegExp('\n', 'g'), '<br />');
    }
}
uppercase.ts
import { Pipe } from '@angular/core';
/**
 * pipe to uppercase a string
 */
@Pipe({ name: 'upper' })
export class Uppercase{
    transform(value: string): string {
        return value == undefined ? value : value.toUpperCase( );
    }
}
pipes.module.ts
import { NgModule } from '@angular/core';
import { BreakLine } from './breakLine';
import { Uppercase} from './uppercase';
@NgModule({
    declarations: [
        BreakLine,
        Uppercase
    ],
    imports: [
    ],
    exports: [
        BreakLine,
        Uppercase
    ]
    ,
})
export class PipesModule {}
my.component.ts
import { Component } from '@angular/core';
@Component({
  selector: 'my-component',
  template: `{{ value | upper | br}}`
})
export class MyComponent {
    public value: string;
}
my.module.ts
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { MyComponent } from './my.component';
import { PipesModule} from './pipes.module';
@NgModule({
  imports: [
    BrowserModule,
    PipesModule,
  ],
  declarations: [
    MyComponent,
  ],
})