Top Banner
MASTERING ANGULAR PIPES Nir Kaufman
36

Angular Pipes Workshop

Jan 12, 2017

Download

Technology

Nir Kaufman
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Angular Pipes Workshop

MASTERING ANGULAR PIPES

Nir Kaufman

Page 2: Angular Pipes Workshop

Nir KaufmanHead of Angular Development @ 500Tech

- AngularJS evangelist - International speaker - Guitar player

Page 3: Angular Pipes Workshop
Page 4: Angular Pipes Workshop
Page 5: Angular Pipes Workshop
Page 6: Angular Pipes Workshop

PART 1 WHAT ARE PIPES?

Page 7: Angular Pipes Workshop

Reusabledisplay-value transformations

Page 8: Angular Pipes Workshop

Take in input data and transform it to a desired output

Page 9: Angular Pipes Workshop

Used in templates

Page 10: Angular Pipes Workshop

@Component({ template: ` <h1>{{ title | uppercase }}</h1> `, }) export class Examples { private title:string; constructor() { this.title = "Pipes Examples"; } }

Page 11: Angular Pipes Workshop

PART 2 BUILT-IN PIPES

Page 12: Angular Pipes Workshop

Angular ships with some core pipes

Page 13: Angular Pipes Workshop

@Component({ selector: 'examples', template: ` <h1>{{ title | uppercase }}</h1> <h1>{{ object | json }}</h1> <h1>{{ today | date }}</h1> <h1>{{ data | async }}</h1> `, }) export class Examples { constructor() { this.title = "Pipes Examples"; this.object = { id: 1, name: 'nir' }; this.today = new Date(); this.data = new Promise<string>( resolve => { setTimeout( () => resolve(“data from server"), 3000 ) }) } }

Page 14: Angular Pipes Workshop
Page 15: Angular Pipes Workshop

Pipes can accept arguments

Page 16: Angular Pipes Workshop

import {Component} from "@angular/core"; @Component({ selector: 'examples', template: ` <h1>{{ today | date:’fullDate' }}</h1> `, }) export class Examples { private today:Date; constructor() { this.today = new Date(); } }

Page 17: Angular Pipes Workshop

Pipes can be chained

Page 18: Angular Pipes Workshop

import {Component} from "@angular/core"; @Component({ selector: 'examples', template: ` <h1>{{ today | date:'fullDate' | uppercase }}</h1> `, }) export class Examples { private today:Date; constructor() { this.today = new Date(); } }

Page 19: Angular Pipes Workshop

PART 3 CUSTOM PIPES

Page 20: Angular Pipes Workshop

Pipe is a Class that implements the PipeTransforminterface

Page 21: Angular Pipes Workshop

import {PipeTransform} from "@angular/core"; export class Capitalize implements PipeTransform { transform(value:string):string { let first = value.substr(0, 1).toUpperCase(); let rest = value.substring(1).toLowerCase(); return first + rest; } }

Page 22: Angular Pipes Workshop

We use the Pipe decorator to declare its name

Page 23: Angular Pipes Workshop

import {Pipe, PipeTransform} from "@angular/core"; @Pipe({ name: 'capitalize' }) export class Capitalize implements PipeTransform { transform(value:string):string { let first = value.substr(0, 1).toUpperCase(); let rest = value.substring(1).toLowerCase(); return first + rest; } }

Page 24: Angular Pipes Workshop

To use the pipe we must declare it

Page 25: Angular Pipes Workshop

@Component({ selector: 'examples', pipes: [ Capitalize ], template: ` <h1>{{ firstName | capitalize }}</h1> `, })

Page 26: Angular Pipes Workshop

Besides the value we can accept any number of arguments

Page 27: Angular Pipes Workshop

@Pipe({ name: 'truncate' }) export class TruncatePipe implements PipeTransform { transform(value:string, args:string[]):string { let limit = args.length > 0 ? parseInt(args[0], 10) : 10; let trail = args.length > 1 ? args[1] : '...'; return value.length > limit ? value.substring(0, limit) + trail : value; } }

Page 28: Angular Pipes Workshop

@Component({ selector: 'examples', pipes: [ TruncatePipe ], template: ` <h1>{{ firstName | truncate : 4 : '___' }}</h1> `, })

Page 29: Angular Pipes Workshop

Pipes are pure by default. The pipe executes only if the value has changed

Page 30: Angular Pipes Workshop

@Pipe({ name: 'capitalize', pure: true })

Page 31: Angular Pipes Workshop

Impure pipes run each time change detection occurs

Page 32: Angular Pipes Workshop

PART 4 HANDS ON!

Page 33: Angular Pipes Workshop

HOW IT WORKS?- Choose a pipe to work on - Mark it in this work sheet:

http://tinyurl.com/ztjtd25 - Build your pipe on a separate branch - Create pull request when done

Page 34: Angular Pipes Workshop

GET INSPIRED- https://github.com/a8m/angular-filter - https://github.com/jprichardson/string.js - https://github.com/dleitee/strman

Page 35: Angular Pipes Workshop

WHO WILL BE THE PIPE MASTER?

Page 36: Angular Pipes Workshop

THANK [email protected]

@nirkaufman

il.linkedin.com/in/nirkaufman

github.com/nirkaufman

ANGULARJS IL

meetup.com/Angular-AfterHours/

meetup.com/AngularJS-IL

Nir Kaufman

meetup.com/frontend-band/