Angular: limitTo 管道不工作
Angular: limitTo pipe not working
我正在尝试 运行 limitTo
通过字符串在 Angular2 上进行管道传输:
{{ item.description | limitTo : 20 }}
我收到以下错误:
The pipe 'limitTo' could not be found
有没有可能这个管道在 Angular2 中被移除了?
这是我的app.module
从'./limit-to.pipe'导入{T运行catePipe};
@NgModule({
imports: [
BrowserModule,
FormsModule,
HttpModule,
InMemoryWebApiModule.forRoot(InMemoryDataService),
RouterModule.forRoot([
{
path: '',
redirectTo: '/home',
pathMatch: 'full'
},
{
path: 'home',
component: GridComponent
},
])
],
declarations: [
AppComponent,
TopNavComponent,
GridComponent,
TruncatePipe
],
providers: [
PinService,
],
bootstrap: [ AppComponent ]
})
export class AppModule { }
我的网格组件正在使用管道:
import { Component,OnInit } from '@angular/core';
import { Router } from '@angular/router';
@Component({
moduleId : module.id,
selector: 'my-grid',
templateUrl : 'grid.component.html',
styleUrls: [ 'grid.component.css']
})
export class GridComponent implements OnInit{
constructor(
private router: Router,
private gridService: GridService) {
}
ngOnInit(): void {
}
}
我的管道定义:
import { PipeTransform, Pipe } from '@angular/core';
@Pipe({
name: 'limitToPipe'
})
export class TruncatePipe implements PipeTransform {
transform(value: string, limit: number) : string {
let trail = '...';
return value.length > limit ? value.substring(0, limit) + trail : value;
}
}
最后是我的模板:
<div *ngFor="let item of items" class="grid-item">
<p class="simple-item-description">
{{ item.description | limitToPipe : 20 }}
</p>
</div>
首先你需要创建一个管道。
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'limitTo'
})
export class TruncatePipe {
transform(value: string, args: string) : string {
// let limit = args.length > 0 ? parseInt(args[0], 10) : 10;
// let trail = args.length > 1 ? args[1] : '...';
let limit = args ? parseInt(args, 10) : 10;
let trail = '...';
return value.length > limit ? value.substring(0, limit) + trail : value;
}
}
在module.ts文件中添加管道
import { NgModule } from '@angular/core';
import { TruncatePipe } from './app.pipe';
@NgModule({
imports: [
],
declarations: [
TruncatePipe
],
exports: [
]
})
export class AppModule { }
然后在绑定代码中使用管道:
{{ item.description | limitTo : 20 }}
演示 plunker
为了回答您的问题是否已删除:是和否。 limitTo
似乎被删除了,但是有一个 slice
管道,它基本上与 limitTo
相同,可以用于字符串和列表。它还让您有机会在给定的起始索引处开始限制,这很整洁。
在您的情况下,一个简单的 {{ item.description | slice:0:20 }}
就足够了。除非你想获得更多编写自己的管道的经验,我什至鼓励你这样做 ;)
来源和文档:https://angular.io/docs/ts/latest/api/common/index/SlicePipe-pipe.html
您可以使用 ng2-truncate 代替
它有更多选项,例如:按单词截断、按字符截断、截断左侧 (...abc)....
$ npm install ng2-truncate --save
声明
import { Component } from '@angular/core';
import { TruncateModule } from 'ng2-truncate';
@Component({
selector: 'my-component',
template: '<p>{{ "123456789" | truncate : 3 }}</p>'
})
export class MyComponent {
}
@NgModule({
imports: [ TruncateModule ],
declarations: [ MyComponent ]
})
export class MyApp { }
组件
@Component({
...
template: '<p>{{ "123456789" | truncate : 3 : "..." }}</p>',
...
})
结果:
<p>123...</p>
我添加这段代码是为了更有意义
{{ item.description | slice:0:20 }}{{ item.description.length > 20 ? '....read more' : '' }}
显示数据被切片并包含更多隐藏的数据
Simple soultion for limit the records
<li *ngFor="let item of _source| slice:0:3; let ind=index;">
{{item.description}}
</li>
Here slice:0:3 --> 3 is the 3 records length means only first three records will be displayed.
我正在尝试 运行 limitTo
通过字符串在 Angular2 上进行管道传输:
{{ item.description | limitTo : 20 }}
我收到以下错误:
The pipe 'limitTo' could not be found
有没有可能这个管道在 Angular2 中被移除了?
这是我的app.module
从'./limit-to.pipe'导入{T运行catePipe};
@NgModule({
imports: [
BrowserModule,
FormsModule,
HttpModule,
InMemoryWebApiModule.forRoot(InMemoryDataService),
RouterModule.forRoot([
{
path: '',
redirectTo: '/home',
pathMatch: 'full'
},
{
path: 'home',
component: GridComponent
},
])
],
declarations: [
AppComponent,
TopNavComponent,
GridComponent,
TruncatePipe
],
providers: [
PinService,
],
bootstrap: [ AppComponent ]
})
export class AppModule { }
我的网格组件正在使用管道:
import { Component,OnInit } from '@angular/core';
import { Router } from '@angular/router';
@Component({
moduleId : module.id,
selector: 'my-grid',
templateUrl : 'grid.component.html',
styleUrls: [ 'grid.component.css']
})
export class GridComponent implements OnInit{
constructor(
private router: Router,
private gridService: GridService) {
}
ngOnInit(): void {
}
}
我的管道定义:
import { PipeTransform, Pipe } from '@angular/core';
@Pipe({
name: 'limitToPipe'
})
export class TruncatePipe implements PipeTransform {
transform(value: string, limit: number) : string {
let trail = '...';
return value.length > limit ? value.substring(0, limit) + trail : value;
}
}
最后是我的模板:
<div *ngFor="let item of items" class="grid-item">
<p class="simple-item-description">
{{ item.description | limitToPipe : 20 }}
</p>
</div>
首先你需要创建一个管道。
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'limitTo'
})
export class TruncatePipe {
transform(value: string, args: string) : string {
// let limit = args.length > 0 ? parseInt(args[0], 10) : 10;
// let trail = args.length > 1 ? args[1] : '...';
let limit = args ? parseInt(args, 10) : 10;
let trail = '...';
return value.length > limit ? value.substring(0, limit) + trail : value;
}
}
在module.ts文件中添加管道
import { NgModule } from '@angular/core';
import { TruncatePipe } from './app.pipe';
@NgModule({
imports: [
],
declarations: [
TruncatePipe
],
exports: [
]
})
export class AppModule { }
然后在绑定代码中使用管道:
{{ item.description | limitTo : 20 }}
演示 plunker
为了回答您的问题是否已删除:是和否。 limitTo
似乎被删除了,但是有一个 slice
管道,它基本上与 limitTo
相同,可以用于字符串和列表。它还让您有机会在给定的起始索引处开始限制,这很整洁。
在您的情况下,一个简单的 {{ item.description | slice:0:20 }}
就足够了。除非你想获得更多编写自己的管道的经验,我什至鼓励你这样做 ;)
来源和文档:https://angular.io/docs/ts/latest/api/common/index/SlicePipe-pipe.html
您可以使用 ng2-truncate 代替
它有更多选项,例如:按单词截断、按字符截断、截断左侧 (...abc)....
$ npm install ng2-truncate --save
声明
import { Component } from '@angular/core';
import { TruncateModule } from 'ng2-truncate';
@Component({
selector: 'my-component',
template: '<p>{{ "123456789" | truncate : 3 }}</p>'
})
export class MyComponent {
}
@NgModule({
imports: [ TruncateModule ],
declarations: [ MyComponent ]
})
export class MyApp { }
组件
@Component({
...
template: '<p>{{ "123456789" | truncate : 3 : "..." }}</p>',
...
})
结果:
<p>123...</p>
我添加这段代码是为了更有意义
{{ item.description | slice:0:20 }}{{ item.description.length > 20 ? '....read more' : '' }}
显示数据被切片并包含更多隐藏的数据
Simple soultion for limit the records
<li *ngFor="let item of _source| slice:0:3; let ind=index;">
{{item.description}}
</li>
Here slice:0:3 --> 3 is the 3 records length means only first three records will be displayed.