Skip to content

Commit 7fe1f97

Browse files
committed
feat(rfv): auto create nested object #551
1 parent 83d1851 commit 7fe1f97

File tree

5 files changed

+10
-1
lines changed

5 files changed

+10
-1
lines changed

.vs/rxweb/v16/.suo

-22.5 KB
Binary file not shown.

client-side/angular/packages/reactive-form-validators/core/defaultContainer.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,9 @@ export const defaultContainer:
130130
propertyType: propertyType,
131131
entity: entity,
132132
dataPropertyName: config ? config.name : undefined,
133-
entityProvider: config ? config.entityProvider : undefined
133+
entityProvider: config ? config.entityProvider : undefined,
134+
defaultValue:config ? config.defaultValue : undefined,
135+
objectConfig:config && config.autoCreate ? {autoCreate:config.autoCreate}: undefined
134136
}
135137
defaultContainer.addProperty(target.constructor, propertyInfo);
136138
}

client-side/angular/packages/reactive-form-validators/core/validator.interface.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ export interface PropertyInfo {
3333
ignore?: (x: any) => boolean;
3434
isPrimaryKey?: boolean;
3535
entityProvider?: Function;
36+
objectConfig?:{
37+
autoCreate?:boolean
38+
}
3639
arrayConfig?: {
3740
allowMaxIndex?: number;
3841
messageKey?: string;

client-side/angular/packages/reactive-form-validators/models/config/prop-config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ export interface PropConfig {
77

88
export interface PropObjectConfig extends PropConfig {
99
entityProvider?: Function;
10+
autoCreate?:boolean;
1011
}
1112

1213
export interface PropArrayConfig extends PropObjectConfig {

client-side/angular/packages/reactive-form-validators/services/rx-form-builder.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -465,6 +465,9 @@ export class RxFormBuilder extends BaseFormBuilder {
465465
break;
466466
case OBJECT_PROPERTY:
467467
let objectValue = entityObject[property.name];
468+
objectValue = !objectValue && property.defaultValue ? property.defaultValue:objectValue
469+
if(!objectValue && property.objectConfig && property.objectConfig.autoCreate)
470+
objectValue = this.createClassObject(property.entity,{});
468471
if (objectValue && objectValue instanceof Object && !(objectValue instanceof FormGroup || objectValue instanceof RxFormGroup)) {
469472
this.isNestedBinding = this.isNested = true;
470473
if (instanceContainer && instanceContainer.conditionalObjectProps)

0 commit comments

Comments
 (0)