MCPcopy
hub / github.com/angular/angular / selectValueAccessor

Function selectValueAccessor

packages/forms/src/directives/shared.ts:400–435  ·  view source on GitHub ↗
(
  dir: NgControl,
  valueAccessors: readonly ControlValueAccessor[] | null | undefined,
)

Source from the content-addressed store, hash-verified

398
399// TODO: vsavkin remove it once https://github.com/angular/angular/issues/3011 is implemented
400export function selectValueAccessor(
401 dir: NgControl,
402 valueAccessors: readonly ControlValueAccessor[] | null | undefined,
403): ControlValueAccessor | null {
404 if (!valueAccessors) return null;
405
406 if (!Array.isArray(valueAccessors) && (typeof ngDevMode === 'undefined' || ngDevMode))
407 _throwInvalidValueAccessorError(dir);
408
409 let defaultAccessor: ControlValueAccessor | undefined = undefined;
410 let builtinAccessor: ControlValueAccessor | undefined = undefined;
411 let customAccessor: ControlValueAccessor | undefined = undefined;
412
413 valueAccessors.forEach((v: ControlValueAccessor) => {
414 if (v.constructor === DefaultValueAccessor) {
415 defaultAccessor = v;
416 } else if (isBuiltInAccessor(v)) {
417 if (builtinAccessor && (typeof ngDevMode === 'undefined' || ngDevMode))
418 _throwError(dir, 'More than one built-in value accessor matches form control with');
419 builtinAccessor = v;
420 } else {
421 if (customAccessor && (typeof ngDevMode === 'undefined' || ngDevMode))
422 _throwError(dir, 'More than one custom value accessor matches form control with');
423 customAccessor = v;
424 }
425 });
426
427 if (customAccessor) return customAccessor;
428 if (builtinAccessor) return builtinAccessor;
429 if (defaultAccessor) return defaultAccessor;
430
431 if (typeof ngDevMode === 'undefined' || ngDevMode) {
432 _throwError(dir, 'No valid value accessor for form control with');
433 }
434 return null;
435}
436
437export function removeListItem<T>(list: T[], el: T): void {
438 const index = list.indexOf(el);

Callers 3

directives_spec.tsFile · 0.90
selectedValueAccessorFunction · 0.90
controlValueAccessorMethod · 0.85

Calls 5

isBuiltInAccessorFunction · 0.85
_throwErrorFunction · 0.85
isArrayMethod · 0.80
forEachMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…