import { EventEmitter, OnChanges, OnDestroy } from '@angular/core'; import { AsyncValidatorFn, ControlContainer, ControlValueAccessor, Validator, ValidatorFn } from '@angular/forms'; import { Path } from '../crnk.expression'; import { CrnkControl } from './crnk.expression.form.model.base'; /** * Allows to bind expressions of type {link Expression} to expectForm controls. The directive is very similar to * NgModel, but allows to bind an expression instead of a generic object. The advantage is that an expression * can hold both */ export declare class FormExpressionDirective extends CrnkControl implements OnChanges, OnDestroy { pathModel: Path; name: string; arbFormExpressionChange: EventEmitter<{}>; /** * NOTE that in contract to NgModel we do not use @Host for parent. This would enforce that the * components are direct children of the forms component. TODO investigate whether there is * any better solutions (maybe something similar to FormGroup). It does not seem like it is possible * to expose an existing ControlContainer again with @Component.providers as it would lead to a circular * dependency (there is no provider for children only, but itself as well). */ constructor(parent: ControlContainer, validators: Array, asyncValidators: Array, valueAccessors: ControlValueAccessor[]); ngOnDestroy(): void; readonly path: string[]; readonly formDirective: any; viewToModelUpdate(newValue: any): void; protected _setUpControl(): void; private _checkForErrors(); private _checkParentType(); }