projects/ng-dynamic-forms/core/src/lib/model/form-array/dynamic-form-array.model.ts
Properties |
|
Methods |
Accessors |
constructor(config: DynamicFormArrayModelConfig, layout?: DynamicFormControlLayout)
|
|||||||||
|
Parameters :
|
| groupAsyncValidators |
Type : DynamicValidatorsConfig | null
|
Decorators :
@serializable()
|
| groupFactory |
Type : function
|
| Readonly groupPrototype |
Type : DynamicFormModel
|
Decorators :
@serializable()
|
| groups |
Type : DynamicFormArrayGroupModel[]
|
Default value : []
|
Decorators :
@serializable()
|
| groupValidators |
Type : DynamicValidatorsConfig | null
|
Decorators :
@serializable()
|
| initialCount |
Type : number
|
Decorators :
@serializable()
|
| Readonly type |
Type : string
|
Default value : DYNAMIC_FORM_CONTROL_TYPE_ARRAY
|
Decorators :
@serializable()
|
| _disabled |
Type : boolean
|
Decorators :
@serializable('disabled')
|
|
Inherited from
DynamicFormControlModel
|
|
Defined in
DynamicFormControlModel:28
|
| asyncValidators |
Type : DynamicValidatorsConfig | null
|
Decorators :
@serializable()
|
|
Inherited from
DynamicFormControlModel
|
|
Defined in
DynamicFormControlModel:27
|
| controlTooltip |
Type : string | null
|
Decorators :
@serializable()
|
|
Inherited from
DynamicFormControlModel
|
|
Defined in
DynamicFormControlModel:34
|
| Private Readonly disabled$ |
Type : BehaviorSubject<boolean>
|
|
Inherited from
DynamicFormControlModel
|
|
Defined in
DynamicFormControlModel:42
|
| Readonly disabledChanges |
Type : Observable<boolean>
|
|
Inherited from
DynamicFormControlModel
|
|
Defined in
DynamicFormControlModel:44
|
| errorMessages |
Type : DynamicValidatorsConfig | null
|
Decorators :
@serializable()
|
|
Inherited from
DynamicFormControlModel
|
|
Defined in
DynamicFormControlModel:29
|
| hidden |
Type : boolean
|
Decorators :
@serializable()
|
|
Inherited from
DynamicFormControlModel
|
|
Defined in
DynamicFormControlModel:30
|
| id |
Type : string
|
Decorators :
@serializable()
|
|
Inherited from
DynamicFormControlModel
|
|
Defined in
DynamicFormControlModel:31
|
| label |
Type : string | null
|
Decorators :
@serializable()
|
|
Inherited from
DynamicFormControlModel
|
|
Defined in
DynamicFormControlModel:32
|
| labelTooltip |
Type : string | null
|
Decorators :
@serializable()
|
|
Inherited from
DynamicFormControlModel
|
|
Defined in
DynamicFormControlModel:33
|
| layout |
Type : DynamicFormControlLayout | null
|
Decorators :
@serializable()
|
|
Inherited from
DynamicFormControlModel
|
|
Defined in
DynamicFormControlModel:35
|
| name |
Type : string
|
Decorators :
@serializable()
|
|
Inherited from
DynamicFormControlModel
|
|
Defined in
DynamicFormControlModel:36
|
| parent |
Type : DynamicPathable | null
|
Default value : null
|
|
Inherited from
DynamicFormControlModel
|
|
Defined in
DynamicFormControlModel:37
|
| relations |
Type : DynamicFormControlRelation[]
|
Decorators :
@serializable()
|
|
Inherited from
DynamicFormControlModel
|
|
Defined in
DynamicFormControlModel:38
|
| Abstract Readonly type |
Type : string
|
|
Inherited from
DynamicFormControlModel
|
|
Defined in
DynamicFormControlModel:46
|
| updateOn |
Type : DynamicFormHook | null
|
Decorators :
@serializable()
|
|
Inherited from
DynamicFormControlModel
|
|
Defined in
DynamicFormControlModel:39
|
| validators |
Type : DynamicValidatorsConfig | null
|
Decorators :
@serializable()
|
|
Inherited from
DynamicFormControlModel
|
|
Defined in
DynamicFormControlModel:40
|
| addGroup |
addGroup()
|
|
Returns :
DynamicFormArrayGroupModel
|
| clear |
clear()
|
|
Returns :
void
|
| get | ||||||
get(index: number)
|
||||||
|
Parameters :
Returns :
DynamicFormArrayGroupModel
|
| insertGroup | ||||||
insertGroup(index: number)
|
||||||
|
Parameters :
Returns :
DynamicFormArrayGroupModel
|
| moveGroup |
moveGroup(index: number, step: number)
|
|
Returns :
void
|
| removeGroup | ||||||
removeGroup(index: number)
|
||||||
|
Parameters :
Returns :
void
|
| Private updateGroupIndex |
updateGroupIndex()
|
|
Returns :
void
|
| toJSON |
toJSON()
|
|
Inherited from
DynamicFormControlModel
|
|
Defined in
DynamicFormControlModel:80
|
|
Returns :
any
|
| size |
getsize()
|
import { DynamicFormControlModel, DynamicFormControlModelConfig } from "../dynamic-form-control.model";
import { DynamicFormModel } from "../dynamic-form.model";
import { DynamicFormControlLayout } from "../misc/dynamic-form-control-layout.model";
import { DynamicPathable } from "../misc/dynamic-form-control-path.model";
import { DynamicValidatorsConfig } from "../misc/dynamic-form-control-validation.model";
import { serializable, serialize } from "../../decorator/serializable.decorator";
import { isFunction, isNumber } from "../../utils/core.utils";
export class DynamicFormArrayGroupModel implements DynamicPathable {
$implicit: DynamicFormArrayGroupModel;
context: DynamicFormArrayModel;
@serializable() group: DynamicFormModel;
@serializable() index: number;
constructor(context: DynamicFormArrayModel, group: DynamicFormModel = [], index: number = -1) {
this.$implicit = this;
this.context = context;
this.group = group;
this.index = index;
}
get parent(): DynamicFormArrayModel {
return this.context;
}
get(index: number): DynamicFormControlModel {
return this.group[index];
}
toJSON() {
return serialize(this);
}
}
export const DYNAMIC_FORM_CONTROL_TYPE_ARRAY = "ARRAY";
export interface DynamicFormArrayModelConfig extends DynamicFormControlModelConfig {
groupAsyncValidators?: DynamicValidatorsConfig;
groupFactory?: () => DynamicFormModel;
groupValidators?: DynamicValidatorsConfig;
groups?: DynamicFormArrayGroupModel[] | null;
initialCount?: number;
}
export class DynamicFormArrayModel extends DynamicFormControlModel {
@serializable() groupAsyncValidators: DynamicValidatorsConfig | null;
groupFactory: () => DynamicFormModel;
@serializable() groupValidators: DynamicValidatorsConfig | null;
@serializable() groups: DynamicFormArrayGroupModel[] = [];
@serializable() initialCount: number;
@serializable() readonly groupPrototype: DynamicFormModel; // only to recreate model from JSON
@serializable() readonly type: string = DYNAMIC_FORM_CONTROL_TYPE_ARRAY;
constructor(config: DynamicFormArrayModelConfig, layout?: DynamicFormControlLayout) {
super(config, layout);
if (isFunction(config.groupFactory)) {
this.groupFactory = config.groupFactory;
} else {
throw new Error("group factory function must be specified for DynamicFormArrayModel");
}
this.groupAsyncValidators = config.groupAsyncValidators || null;
this.groupPrototype = this.groupFactory();
this.groupValidators = config.groupValidators || null;
this.initialCount = isNumber(config.initialCount) ? config.initialCount : 1;
if (Array.isArray(config.groups)) {
config.groups.forEach((arrayGroup, index) => {
this.groups.push(new DynamicFormArrayGroupModel(this, arrayGroup.group, arrayGroup.index || index));
});
} else {
for (let index = 0; index < this.initialCount; index++) {
this.addGroup();
}
}
}
private updateGroupIndex(): void {
this.groups.forEach((group, index) => group.index = index);
}
get size(): number {
return this.groups.length;
}
get(index: number): DynamicFormArrayGroupModel {
return this.groups[index];
}
addGroup(): DynamicFormArrayGroupModel {
return this.insertGroup(this.groups.length);
}
insertGroup(index: number): DynamicFormArrayGroupModel {
let group = new DynamicFormArrayGroupModel(this, this.groupFactory());
this.groups.splice(index, 0, group);
this.updateGroupIndex();
return group;
}
moveGroup(index: number, step: number): void {
this.groups.splice(index + step, 0, ...this.groups.splice(index, 1));
this.updateGroupIndex();
}
removeGroup(index: number): void {
this.groups.splice(index, 1);
this.updateGroupIndex();
}
clear(): void {
this.groups.splice(0);
this.updateGroupIndex();
}
}