Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Methods vs pipes

Is there a difference between using a pipe and a method in template interpolation in an Angular application?

For example:

<h1>{{ name.toLowerCase() }}</h1> vs <h1>{{ name | lowercase }}</h1>

In terms of performance, is there a real gain or is it just personal preference?

I know that calling methods in your template will generally slow performance due to Angular constantly checking to see whether or not its execution has changed anything. Most of the time, I'd use a computed property on my component.

like image 230
User 5842 Avatar asked Jan 18 '18 23:01

User 5842


People also ask

Why use pipes Angular?

Use pipes to transform strings, currency amounts, dates, and other data for display. Pipes are simple functions to use in template expressions to accept an input value and return a transformed value. Pipes are useful because you can use them throughout your application, while only declaring each pipe once.

What is pipe and directive?

A pipe gets data as an input, transforms it and outputs this data in another way. A directive gets a DOM element it's "attached" to and enhances it with some kind of features.

What is async pipe in angular?

The async pipe subscribes to an Observable or Promise and returns the latest value it has emitted. When a new value is emitted, the async pipe marks the component to be checked for changes. When the component gets destroyed, the async pipe unsubscribes automatically to avoid potential memory leaks.


2 Answers

TL;DR; Don't use functions or methods in the template, use pipes instead.

A pipe would be called only when input values change. A function or a method would be called on every change detection. Here is a nice article if you want to know more about functions in template.

Here is a running stackblitz demonstration of method vs pipe.

like image 187
ibenjelloun Avatar answered Oct 24 '22 07:10

ibenjelloun


Please read documentation about pipes paying attention to such called "pure" and "impure" pipes. That should address the question about the performance for pipes.

Calling a function like this

{{ name.toLowerCase() }}

depends of a function itself. In this specific case I think it is the same as pipe, but pipes where specifically created for that purpose.

like image 21
Arttu Avatar answered Oct 24 '22 06:10

Arttu