MCPcopy
hub / github.com/angular/angular / transformedValue

Function transformedValue

packages/forms/signals/src/api/transformed_value.ts:114–150  ·  view source on GitHub ↗
(
  value: ModelSignal<TValue>,
  options: TransformedValueOptions<TValue, TRaw>,
)

Source from the content-addressed store, hash-verified

112 * ```
113 */
114export function transformedValue<TValue, TRaw>(
115 value: ModelSignal<TValue>,
116 options: TransformedValueOptions<TValue, TRaw>,
117): TransformedValueSignal<TRaw> {
118 const {parse, format} = options;
119 const parser = createParser(value, value.set, parse);
120
121 // Create the result signal with overridden set/update and a `parseErrors` property.
122 const rawValue = linkedSignal(() => format(value()));
123 const result = rawValue as WritableSignal<TRaw> & {
124 parseErrors: Signal<readonly ValidationError.WithoutFieldTree[]>;
125 };
126 result.parseErrors = parser.errors;
127 const originalSet = result.set.bind(result);
128
129 // Wire up the integration with the form control (parse errors and reset handling).
130 const integration = inject(FORM_CONTROL_INTEGRATION, {self: true, optional: true});
131 if (integration) {
132 integration.setParseErrors(parser.errors);
133 integration.onReset = (resetValue) => {
134 parser.reset();
135 const modelValue = resetValue !== undefined ? resetValue : value();
136 originalSet(format(modelValue));
137 };
138 }
139
140 // Notify the parser when `set` or `update` is called on the raw value
141 result.set = (newRawValue: TRaw) => {
142 parser.setRawValue(newRawValue);
143 originalSet(newRawValue);
144 };
145 result.update = (updateFn: (value: TRaw) => TRaw) => {
146 result.set(updateFn(rawValue()));
147 };
148
149 return result;
150}

Callers 4

LegacyParsingInputClass · 0.90
CustomControlClass · 0.85
TestCmpClass · 0.85
TestNumberInputClass · 0.85

Calls 8

createParserFunction · 0.90
linkedSignalFunction · 0.90
injectFunction · 0.90
valueFunction · 0.85
setParseErrorsMethod · 0.80
bindMethod · 0.65
resetMethod · 0.65
setMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…