коврик степпер не работает с опциями выбора
Я использую ngx с матовым степпером. Я могу получить форму, но степпер не показывает раскрывающийся список
шаговый:
<form [formGroup]="form" (ngSubmit)="submit()">
<mat-horizontal-stepper>
<mat-step *ngFor="let step of steps; let index = index; let last = last;">
<ng-template matStepLabel>{{ step.label }}</ng-template>
<formly-form [form]="form.at(index)" [model]="model" [fields]="step.fields" [options]="options[index]">
</formly-form>
<div>
<button *ngIf="index !== 0" matStepperPrevious class="btn btn-primary" type="button"
(click)="prevStep(index)">Back</button>
<button *ngIf="!last" matStepperNext class="btn btn-primary" type="button" [disabled]="!form.at(index).valid"
(click)="nextStep(index)">Next</button>
<button *ngIf="last" class="btn btn-primary" [disabled]="!form.valid" type="submit">Submit</button>
</div>
</mat-step>
</mat-horizontal-stepper>
</form>
код:
import { Component, OnInit } from '@angular/core';
import { FormArray, FormGroup } from '@angular/forms';
import { FormlyFormOptions, FormlyFieldConfig } from '@ngx-formly/core';
export interface StepType {
label: string;
fields: FormlyFieldConfig[];
}
@Component({
selector: 'app-step-profile',
templateUrl: './step-profile.component.html',
styleUrls: ['./step-profile.component.css']
})
export class StepProfileComponent implements OnInit {
activedStep = 0;
model = {};
steps: StepType[] = [
{
label: 'details',
fields: [
{
key: 'somekey',
type: 'select',
templateOptions: {
label: 'label',
options: [
{ name: 'Iron Man', value: 'iron_man' },
{ name: 'Captain America', value: 'captain_america' },
{ name: 'Black Widow', value: 'black_widow' },
{ name: 'Hulk', value: 'hulk' },
{ name: 'Captain Marvel', value: 'captain_marvel' }
]
}
}
]
}
];
form = new FormArray(this.steps.map(() => new FormGroup({})));
options = this.steps.map(() => <FormlyFormOptions>{});
constructor() { }
ngOnInit() {
}
prevStep(step) {
this.activedStep = step - 1;
}
nextStep(step) {
this.activedStep = step + 1;
}
submit() {
alert(JSON.stringify(this.model));
}
}
1 ответ
Я получил эту работу, выполнив следующие действия:
{
key: 'something',
type: 'select',
defaultValue: "hulk",
templateOptions: {
label: 'label',
options: [
{ name: 'Iron Man', value: 'iron_man' },
{ name: 'Captain America', value: 'captain_america' },
{ name: 'Black Widow', value: 'black_widow' },
{ name: 'Hulk', value: 'hulk' },
{ name: 'Captain Marvel', value: 'captain_marvel' }
],
labelProp: "name",
valueProp: "value"
}
}
Похоже, вам просто нужно добавить свойства labelProp и valueProp.