Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | 6x 6x 6x 6x 6x 6x 11x 11x 11x 8x 11x 11x 19x 11x 41x 11x | import { DynamicFormElementExpression } from '../dynamic-form-element/dynamic-form-element-expression'; import { DynamicFormExpressionMemoization } from '../dynamic-form-expression/dynamic-form-expression-memoization'; import { DynamicFormErrorHandler } from '../dynamic-form-error/dynamic-form-error.handler'; import { DynamicFormField } from './../dynamic-form-field/dynamic-form-field'; import { DynamicFormFieldExpressionData } from './dynamic-form-field-expression-data'; import { DynamicFormFieldExpressionFunc } from './dynamic-form-field-expression-func'; export class DynamicFormFieldExpression< Data extends DynamicFormFieldExpressionData = DynamicFormFieldExpressionData, Func extends DynamicFormFieldExpressionFunc<Data> = DynamicFormFieldExpressionFunc<Data> > extends DynamicFormElementExpression<Data, Func> { protected _memo: DynamicFormExpressionMemoization; constructor( override readonly key: string, readonly field: DynamicFormField, override readonly func: Func, protected override errorHandler: DynamicFormErrorHandler, ) { super(key, field, func, errorHandler); this._memo = { previousValue: undefined, currentValue: undefined }; } override get value(): any { this.previousValue = this.currentValue; this.currentValue = this.tryEvaluate(); if (this.previousValue !== this.currentValue) { this.field.expressionChangesSubject.next({ key: this.key, previousValue: this.previousValue, currentValue: this.currentValue, }); } return this.currentValue; } protected override evaluate(): any { return this.func(this.field.expressionData as Data, this._memo); } private get previousValue(): any { return this._memo.previousValue; } private set previousValue(value: any) { this._memo.previousValue = value; } private get currentValue(): any { return this._memo.currentValue; } private set currentValue(value: any) { this._memo.currentValue = value; } } |