Pipes purs ou impurs
Comprenez le comportement de détection des changements des pipes.
Pipes purs ou impurs est une leçon Angular Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Angular Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Angular Academy comprend 4 leçons au total.
Les pipes sont purs par défaut
Chaque pipe est pur par défaut. Un pipe pur ne s'exécute à nouveau que lorsque sa valeur d'entrée ou ses arguments changent de référence.
Pourquoi les pipes purs sont rapides
Angular évite d'appeler un pipe pur pendant la détection des changements si la référence de l'entrée n'a pas changé. Les pipes purs sont ainsi efficaces.
@Pipe({ name: "exclaim", standalone: true })
export class ExclaimPipe implements PipeTransform {
transform(value: string) { return value + "!"; }
}
// pure: only re-runs when value changesChangements de référence et de valeur
Les pipes purs détectent les changements de référence. Modifier un tableau sur place ne déclenche PAS un pipe pur, car la référence du tableau reste la même.
// this will NOT re-run a pure pipe:
this.items.push("new");
// this WILL, new reference:
this.items = [...this.items, "new"];Déclarer un pipe impur
Définissez pure: false dans le décorateur @Pipe pour rendre un pipe impur. Un pipe impur s'exécute à chaque cycle de détection des changements.
@Pipe({ name: "filter", standalone: true, pure: false })
export class FilterPipe implements PipeTransform {
transform(items: string[], term: string) {
return items.filter(i => i.includes(term));
}
}Quand utiliser des pipes impurs
Utilisez des pipes impurs lorsque la transformation dépend de données modifiables, par exemple pour filtrer un tableau que vous modifiez sur place, ou de valeurs qui changent sans nouvelle référence.
Le coût des pipes impurs
Les pipes impurs s'exécutent très fréquemment, à chaque cycle de détection des changements. Une logique lourde à l'intérieur peut nuire aux performances ; veillez donc à la garder légère.
Le pipe async est impur
Le pipe intégré async est impur. Il s'abonne à un Observable ou à une Promise et met à jour la vue lorsque de nouvelles valeurs arrivent.
<p>{{ data$ | async }}</p>
// component
data$ = this.http.get("/api/data");Le pipe async se désabonne automatiquement
Un avantage important du pipe async est le désabonnement automatique lorsque le composant est détruit, ce qui évite les fuites mémoire.
@Component({
template: "<p>{{ count$ | async }}</p>"
})
export class DemoComponent {
count$ = interval(1000);
}Éviter les mutations avec les pipes purs
Pour que les pipes purs fonctionnent avec les collections, traitez les données comme immuables : créez de nouveaux tableaux et objets au lieu de modifier ceux qui existent déjà.
// good for pure pipes:
this.users = this.users.concat(newUser);
this.user = { ...this.user, name: "Ada" };Choisir entre pur et impur
Privilégiez les pipes purs pour un comportement prévisible et rapide. N'utilisez un pipe impur que lorsque vous devez réellement réagir aux mutations. Souvent, une nouvelle conception fondée sur des données immuables permet d'éviter complètement les pipes impurs.
Bonnes pratiques pour les pipes impurs
Si vous devez utiliser un pipe impur, mémorisez les résultats afin de ne pas recalculer lorsque les entrées sont inchangées.
@Pipe({ name: "memoFilter", standalone: true, pure: false })
export class MemoFilterPipe implements PipeTransform {
private last = "";
private cache: string[] = [];
transform(items: string[], term: string) {
if (term === this.last) return this.cache;
this.last = term;
this.cache = items.filter(i => i.includes(term));
return this.cache;
}
}Vérification rapide
Vérifiez votre compréhension des pipes purs et impurs.
Récapitulatif
Les pipes purs ne s'exécutent qu'en cas de changement de référence et sont rapides ; les pipes impurs (pure: false) s'exécutent à chaque cycle et conviennent aux données modifiables. Le pipe async est impur et se désabonne automatiquement.
Privilégiez les données immuables afin que les pipes purs restent efficaces.
Questions Fréquemment Posées
La leçon « Pipes purs ou impurs » est-elle gratuite ?
Oui — le texte complet de « Pipes purs ou impurs » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Angular Academy, passe à CoddyKit PRO. Le cours Angular Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Pipes purs ou impurs » ?
Comprenez le comportement de détection des changements des pipes. Tu pratiques Angular Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Angular Academy ?
Aucune expérience préalable n'est requise. Angular Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Pipes purs ou impurs » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Angular Academy ?
Oui. Chaque leçon Angular Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Utiliser les pipes intégrés
- Chaînage et paramétrage des pipes
- Créer des pipes personnalisés
- Pipes purs ou impurs