I am trying to run limitTo
pipe on Angular2 on a string:
{{ item.description | limitTo : 20 }}
And I get the following error:
The pipe 'limitTo' could not be found
Is it possible that this pipe was removed in Angular2?
This is my app.module
import { TruncatePipe } from './limit-to.pipe';
@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 { }
My grid component that is using the pipe:
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 {
}
}
My Pipe definition:
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;
}
}
And finally my template:
<div *ngFor="let item of items" class="grid-item">
<p class="simple-item-description">
{{ item.description | limitToPipe : 20 }}
</p>
</div>
First you need to create a pipe.
Add the pipe in the module.ts file
Then use the pipe in the binding code:
Demo plunker
In order to answer to your question if it was removed: yes and no.
limitTo
seems to be removed, but there is aslice
pipe which basically does the same aslimitTo
and can be used on strings aswell as on lists. It also gives you the oppurtunity to start your limitation at a given start index, which is neat.In your case a simple
{{ item.description | slice:0:20 }}
would be enough. Unless you want to gain more experience writing your own pipe, which I even encourage ;)Source and Documentation: https://angular.io/docs/ts/latest/api/common/index/SlicePipe-pipe.html
You can use ng2-truncate instead
It has more options such as: truncate by words, truncate by characters, truncate left side (...abc)....
Declarations
Component
Result: