/
githubmirror
/
angular
Обзор
Документация
Войти
/
githubmirror
/
angular
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
packages/forms/signals/compat/src/compat_node_state.ts
54 строки
2 KB
Miles Malerba
build(forms): expose signal forms compat package
14 ноя 2025, 20:23
14 ноя 2025, 20:23
fc1ef79
Код
Авторство
О чём код?
/** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.dev/license */ import {computed, Signal} from '@angular/core'; import {AbstractControl} from '@angular/forms'; import {FieldNodeState} from '../../src/field/state'; import {CompatFieldNode, getControlEventsSignal, getControlStatusSignal} from './compat_field_node'; import {CompatFieldNodeOptions} from './compat_structure'; /** * A FieldNodeState class wrapping a FormControl and proxying it's state. */ export class CompatNodeState extends FieldNodeState { override readonly touched: Signal<boolean>; override readonly dirty: Signal<boolean>; override readonly disabled: Signal<boolean>; private readonly control: Signal<AbstractControl>; constructor( readonly compatNode: CompatFieldNode, options: CompatFieldNodeOptions, ) { super(compatNode); this.control = options.control; this.touched = getControlEventsSignal(options, (c) => c.touched); this.dirty = getControlEventsSignal(options, (c) => c.dirty); const controlDisabled = getControlStatusSignal(options, (c) => c.disabled); this.disabled = computed(() => { return controlDisabled() || this.disabledReasons().length > 0; }); } override markAsDirty() { this.control().markAsDirty(); } override markAsTouched() { this.control().markAsTouched(); } override markAsPristine() { this.control().markAsPristine(); } override markAsUntouched() { this.control().markAsUntouched(); } }