MCPcopy Index your code
hub / github.com/angular/angular / createParser

Function createParser

packages/forms/signals/src/util/parser.ts:41–68  ·  view source on GitHub ↗
(
  getValue: () => TValue,
  setValue: (value: TValue) => void,
  parse: (raw: TRaw) => ParseResult<TValue>,
)

Source from the content-addressed store, hash-verified

39 * @returns A {@link Parser} instance.
40 */
41export function createParser<TValue, TRaw>(
42 getValue: () => TValue,
43 setValue: (value: TValue) => void,
44 parse: (raw: TRaw) => ParseResult<TValue>,
45): Parser<TRaw> {
46 const errors = linkedSignal({
47 source: getValue,
48 computation: () => [] as readonly ValidationError.WithoutFieldTree[],
49 equal: shallowArrayEquals,
50 });
51
52 const setRawValue = (rawValue: TRaw) => {
53 const result = parse(rawValue);
54 errors.set(normalizeErrors(result.error));
55 if (result.value !== undefined) {
56 setValue(result.value);
57 }
58 // `errors` is a linked signal sourced from the model value; write parse errors after
59 // model updates so `{value, errors}` results do not get reset by the recomputation.
60 errors.set(normalizeErrors(result.error));
61 };
62
63 const reset = () => {
64 errors.set([]);
65 };
66
67 return {errors: errors.asReadonly(), setRawValue, reset};
68}

Callers 2

nativeControlCreateFunction · 0.90
transformedValueFunction · 0.90

Calls 2

linkedSignalFunction · 0.90
asReadonlyMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…