自定义管道到 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 { }
我创建了一个自定义管道。
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 { }