N👩
Прайм Парк: 180 метров за 100 млн ($1.33M), + налоги и жкх 24к/месяц ($320)
Size: a a a
N👩
Вキ
N👩
Вキ
Вキ
В
Вキ
Вキ
В
DT
const form = {
userId: { type: "string", config: {...}},
productIds: { type: "numberArray", config: { options: [1, 2, 5], ... },
}
const formControlsMap = {
string: StringInputComponent,
numberArray: SelectComponent,
}
interface DynamicFormControl {
@Input() readonly config: unknown;
@Input() readonly formControl: FormControl; // или имплементит CVA
}
@Component({
selector: "dynamic-form-control-host",
template: "<ng-container *ngxComponentOutlet="component"></ng-container>"
})
export class DynamicFormControlHostComponent implements DynamicFormControl {
@Input() readonly config: unknown;
@Input() readonly formControl: FormControl;
@Input() readonly component: DynamicFormControl;
}
@Component({
template: "<dynamic-form-control-host
*ngFor="let el of formElements"
[formControl]="el.formControl"
[config]="el.config"
[component]="el.component"
></dynamic-form-control-host>",
})
class DynamicFormComponent {
@Input() readonly form;
formElements;
ngOnChanges({ form }) {
if (form) {
this.formElements = this.formToElements(this.form);
}
}
private formToElements(form) {
...
}
}
DT
const form = {
userId: { type: "string", config: {...}},
productIds: { type: "numberArray", config: { options: [1, 2, 5], ... },
}
const formControlsMap = {
string: StringInputComponent,
numberArray: SelectComponent,
}
interface DynamicFormControl {
@Input() readonly config: unknown;
@Input() readonly formControl: FormControl; // или имплементит CVA
}
@Component({
selector: "dynamic-form-control-host",
template: "<ng-container *ngxComponentOutlet="component"></ng-container>"
})
export class DynamicFormControlHostComponent implements DynamicFormControl {
@Input() readonly config: unknown;
@Input() readonly formControl: FormControl;
@Input() readonly component: DynamicFormControl;
}
@Component({
template: "<dynamic-form-control-host
*ngFor="let el of formElements"
[formControl]="el.formControl"
[config]="el.config"
[component]="el.component"
></dynamic-form-control-host>",
})
class DynamicFormComponent {
@Input() readonly form;
formElements;
ngOnChanges({ form }) {
if (form) {
this.formElements = this.formToElements(this.form);
}
}
private formToElements(form) {
...
}
}
MZ
S
Вキ
G
const form = {
userId: { type: "string", config: {...}},
productIds: { type: "numberArray", config: { options: [1, 2, 5], ... },
}
const formControlsMap = {
string: StringInputComponent,
numberArray: SelectComponent,
}
interface DynamicFormControl {
@Input() readonly config: unknown;
@Input() readonly formControl: FormControl; // или имплементит CVA
}
@Component({
selector: "dynamic-form-control-host",
template: "<ng-container *ngxComponentOutlet="component"></ng-container>"
})
export class DynamicFormControlHostComponent implements DynamicFormControl {
@Input() readonly config: unknown;
@Input() readonly formControl: FormControl;
@Input() readonly component: DynamicFormControl;
}
@Component({
template: "<dynamic-form-control-host
*ngFor="let el of formElements"
[formControl]="el.formControl"
[config]="el.config"
[component]="el.component"
></dynamic-form-control-host>",
})
class DynamicFormComponent {
@Input() readonly form;
formElements;
ngOnChanges({ form }) {
if (form) {
this.formElements = this.formToElements(this.form);
}
}
private formToElements(form) {
...
}
}
И
AS
И
И