• Overview
@angular/forms/signals

submit

function

Submits a given Field using the given action function and applies any server errors resulting from the action to the field. Server errors returned by the action will be integrated into the field as a ValidationError on the sub-field indicated by the field property of the server error.

API

function submit<TValue>(
  form: Field<TValue>,
  action: (form: Field<TValue>) => Promise<TreeValidationResult>,
): Promise<void>;

submit

Promise<void>

Submits a given Field using the given action function and applies any server errors resulting from the action to the field. Server errors returned by the action will be integrated into the field as a ValidationError on the sub-field indicated by the field property of the server error.

@paramformField<TValue>

The field to submit.

@paramaction(form: Field<TValue>) => Promise<TreeValidationResult>

An asynchronous action used to submit the field. The action may return server errors.

@returnsPromise<void>

Usage Notes

async function registerNewUser(registrationForm: Field<{username: string, password: string}>) {
  const result = await myClient.registerNewUser(registrationForm().value());
  if (result.errorCode === myClient.ErrorCode.USERNAME_TAKEN) {
    return [{
      field: registrationForm.username,
      error: {kind: 'server', message: 'Username already taken'}
    }];
  }
  return undefined;
}

const registrationForm = form(signal({username: 'god', password: ''}));
submit(registrationForm, async (f) => {
  return registerNewUser(registrationForm);
});
registrationForm.username().errors(); // [{kind: 'server', message: 'Username already taken'}]
Jump to details