Skip to main content

LinkedSignal | Angular

  • LinkedSignal | Angular

O Angular 19 está no horizonte, e ele traz uma série de novos recursos interessantes para a mesa. Uma das adições mais notáveis é o primitivo linkedSignal, que promete revolucionar a maneira como lidamos com programação reativa em aplicações angulares.

O Problema com a Redefinição de Padrões

Tradicionalmente, a implementação de padrões de redefinição em Angular envolvido usando computed() sinais. Embora eficaz, essa abordagem tem limitações. Quando você precisa definir o valor de um sinal explicitamente, ele se torna um sinal somente leitura, dificultando a flexibilidade.

A Solução linkedSignal

linkedSignalresolve essa limitação fornecendo um sinal gravável que atualiza automaticamente seu valor com base em alterações em um sinal de origem. Isso nos permite criar uma sincronização perfeita entre os dois, garantindo uma experiência de usuário livre de falhas.

Entendendo linkedSignal

Enquanto linkedSignal terá várias sobrecargas, duas delas valem a pena mencionar:

  • linkedSignal com Fonte e Computação

Essa sobrecarga permite que você crie um linkedSignal que calcula seu valor com base no valor de um sinal de origem. Aqui está um exemplo:

import { signal, linkedSignal } from '@angular/core';
const sourceSignal = signal(0);
const linkedSignal = linkedSignal({
source: this.sourceSignal,
computation: () => this.sourceSignal() * 5,
});

Neste exemplo, linkedSignal será sempre o dobro do valor de sourceSignal. Sempre que o sourceSignal muda, linkedSignal automaticamente recomputará seu valor. Aqui está um exemplo mais real do linkedSignal:

alt text

CourseDetailComponent componente aceita um courseId como entrada e exibe o número de alunos matriculados. Nosso objetivo é redefinir a contagem de alunos sempre que selecionado courseId mudanças. Isso requer um mecanismo para sincronizar dois sinais: o courseId e o StudentCount.

Enquanto o uso de computed() pode ser eficaz em derivar valores de outros sinais, eles são somente leitura. Para atualizar dinamicamente o studentCount com base em alterações no courseId, nós alavancamos o linkedSignal primitivo. Criando um sinal gravável ligado ao courseId, nós podemos definir o studentCount explicitamente e atualizá-lo automaticamente sempre que o courseId mudanças. Essa abordagem fornece uma solução robusta e flexível para gerenciar dependências de sinal e garantir a consistência dos dados.

  • linkedSignalTaquigrafia

Para cenários mais simples, você pode usar uma sintaxe abreviada para criar linkedSignal:

const sourceSignal = signal(10);
const linkedSignal = linkedSignal(() => sourceSignal() * 2);

Essa sintaxe abreviada é equivalente à primeira sobrecarga, mas é mais concisa e fácil de ler.

Principais benefícios do LinkedSignals

  • Padrões de Redefinição Simplificados:

    Implementar facilmente padrões de redefinição sem as complexidades dos sinais computed().

  • Flexibilidade Aprimorada:

    Mantenha a capacidade de definir valores de sinal explicitamente, garantindo atualizações automáticas.

  • Desempenho Melhorado:

    Otimizado sob o capô para atualizações eficientes.

  • Código mais limpo:

    Código mais conciso e legível, especialmente para cenários reativos complexos.