自定义管道到 templateUrl

Custom pipe to templateUrl

我创建了一个自定义管道。

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

@Component({
  selector: 'app-summary',
  templateUrl: './summary.component.html',
  styleUrls: ['./summary.component.css']
})

@Pipe({
    name:'summary'
})
export class SummaryComponent implements PipeTransform {

  transform(value:string,args?:any) {
   // details
}

在我的app.component.html。我有

 <app-summary></app-summary>  

在我的 summary.component.html 中,我有

<input type="text" [(ngModel)]="title" >
<br>
{{title}}

我想使用 {{title}} 中的管道。但似乎没有应用管道。我缺少什么?

编辑: 我添加了管道代码详细信息。

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

@Component({
   selector: 'app-summary',
   templateUrl: './summary.component.html',
   styleUrls: ['./summary.component.css']
})

@Pipe({
    name:'summary'
})
export class SummaryComponent implements PipeTransform {

  transform(value:string,args?:any) {
       if(!value)
          return null;
          let prep = ['of','the'];
       let splitted = value.split(' '); 

       for(var i=0;i<splitted.length;i++){
           if(i>0 && prep.includes(splitted[i].toLowerCase()))
              splitted[i]=splitted[i].toLowerCase();
           else
           {
            splitted[i]= splitted[i].substring(0,1).toUpperCase()+splitted[i].substring(1).toLowerCase();
           }
       }
       return splitted.join(' ');
  }
}

您需要告诉 angular 您想要使用该管道,如下所示:

{{title | summary}}

改变这个:

<input type="text" [(ngModel)]="title" >
<br>
{{title}}

为此:

<input type="text" [(ngModel)]="title" >
<br>
{{title | summary}}

您在渲染时并未实际应用 summary 管道 title

这是实现管道的正确方法:

summary.pipe.ts

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

@Pipe({
    name:'summary'
})
export class SummaryPipe implements PipeTransform {

  transform(value:string,args?:any) {
    // details
  }
}

summary.component.ts

import { Component } from '@angular/core';

@Component({
  selector: 'app-summary',
  templateUrl: './summary.component.html',
  styleUrls: ['./summary.component.css']
})
export class SummaryComponent {

}

然后您可以像这样在您的视图中使用管道:

<input type="text" [(ngModel)]="title" >
<br>
{{title | summary }}

不要忘记在要使用它的 NgModule 中添加 SummaryPipe:

@NgModule({
  declarations: [
    SummaryComponent,
    SummaryPipe
  ],
  providers: [...]
})
export class SummaryModule { }