Aller au contenu

Lab 13: computed()

step-12-album-wholesale-v21-pre-control-flow

Continuez depuis le résultat du Lab 13. Si vous repartez à zéro, utilisez step-12-album-wholesale-v21-pre-control-flow comme base et complétez d’abord les Labs 11–13.

Dans ce lab, vous allez créer des états dérivés en utilisant les signals computed. Vous implémenterez computed() pour calculer automatiquement des valeurs comme des compteurs et des totaux à partir d’autres signals, en garantissant leur mise à jour réactive lorsque les dépendances changent.

computed() dérive une valeur à partir d’autres signals:

import { signal, computed } from '@angular/core';
albums = signal<Album[]>([]);
albumCount = computed(() => this.albums().length);

Les signals computed se mettent à jour automatiquement lorsque les dépendances changent:

export class AlbumListComponent {
albums = toSignal(this.albumService.getAlbums(), { initialValue: [] });
albumCount = computed(() => this.albums().length);
totalPrice = computed(() =>
this.albums().reduce((sum, album) => sum + album.price, 0)
);
}

Appelez les signals computed comme des signals réguliers:

<p>Total Albums: {{ albumCount() }}</p>
<p>Total Price: {{ totalPrice() | currency }}</p>