Exemplo de formulário de sinais angulares

Um exemplo mínimo ilustra a forma desta abordagem. O modelo permanece uma interface simples e o sinal mantém os valores atuais do formulário.

interface RegistrationData {
  email: string;
  password: string;
  confirmPassword: string;
  acceptedTerms: boolean;
}

O formulário é então criado passando este sinal de modelo para form()juntamente com um esquema que declara regras de validação.

const registrationModel = signal({
  email: '',
  password: '',
  confirmPassword: '',
  acceptedTerms: false,
});

const registrationForm = form(registrationModel, (schema) => {
  required(schema.email, { message: 'Email is required' });
  email(schema.email, { message: 'Enter a valid email address' });

  required(schema.password, { message: 'Password is required' });
  required(schema.confirmPassword, { message: 'Please confirm your password' });

  required(schema.acceptedTerms, {
    message: 'You must accept the terms to continue',
  });
});

O que importa aqui não é a sintaxe, mas a estrutura. O sinal do modelo define qual é a forma. O esquema define quais restrições se aplicam. Angular assume a responsabilidade de derivar o estado do campo e expô-lo por meio de sinais que a IU pode consumir diretamente.