Vinkel Material matte-velge: avbryte valget endringshendelse

stemmer
0

Jeg prøver å finne ut hvordan du avbryter matte-select (Vinkel Material 7.3.7) endringshendelse og gjenopprette til tidligere tilstand i hendelsesbehandling. Er det mulig?

Min velg kontroll:

                <mat-form-field>
                    <mat-select #visualOptionsSelect formControlName=competenceVisualOption (selectionChange)=visualOptionSelectionChanged($event)
                                required>
                        <mat-option *ngFor=let visualOption of availableVisualOptions [value]=visualOption>
                            {{visualOption.name}}
                        </mat-option>
                    </mat-select>
                </mat-form-field>

Når enkelte vilkår er oppfylt Jeg vil avbryte valget og la tidligere valgte elementet. Ved hjelp av reaktive former prøvde å lagre elementet som er valgt i separate variable og gjøre sammenligningen i valueChangestegning av competenceVisualOptionkontroll. Men dette ser ganske rotete. Jeg har også andre avhengigheter på dette valgte elementet, derfor trenger jeg å behandle dem manuelt også.

Jeg hadde virkelig setter pris på all hjelp. Takk på forhånd

Publisert på 09/10/2019 klokken 11:55
kilden bruker
På andre språk...                            


1 svar

stemmer
0

Vel, synes at det ikke er out-of-the-box funksjon som jeg kan bruke. Den eneste måten å løse problemet mitt er å lagre 'siste' valgt verdi - jeg kan tilbake til det hvis det er nødvendig.

Mitt mal kode:

                <mat-form-field>
                    <mat-select #visualOptionsSelect placeholder="Тип отображения" formControlName="templateCompetenceVisualOption" (selectionChange)="visualOptionSelectionChanged($event.value)"
                                required>
                        <mat-option *ngFor="let visualOption of availableVisualOptions" [value]="visualOption">
                            {{visualOption.name}}
                        </mat-option>
                    </mat-select>
                </mat-form-field>

I endre hendelsesbehandling - selectionChange- Jeg har alltid lagre nåværende valgte verdien og deretter gå tilbake til det etter nytt valg hvis brukeren svarer 'nei' på spørsmålet (jeg bruker sweetalert2biblioteket for popups)

visualOptionSelectionChanged(selectedVisualOption: CompetenceVisualOption) {

    //если ранее поле было не заполнено, то не задаем вопрос
    if (!this.lastActiveVisualOption) {

        //перезапишем предыдущее активное значение
        this.lastActiveVisualOption = selectedVisualOption;
        return;
    }

    swal({
        text: 'При смене отображения вариантов ответов, предыдущие значения сбросятся. Сменить отображение ответов?',
        type: 'warning',
        showCancelButton: true,
        confirmButtonText: 'Да',
        cancelButtonText: 'Нет',
        confirmButtonClass: "btn btn-primary",
        cancelButtonClass: "btn btn-secondary cfb-btn-border",
        buttonsStyling: false
    }).then((result) => {
        if (result.value) {

            // перерисуем область ответов
            this._setRatingLevelOptionsComponent(selectedVisualOption.code);
            //перезапишем предыдущее активное значение
            this.lastActiveVisualOption = selectedVisualOption;
        }
        else {
            //если выбрали Нет, то вернем прежний вариант и варианты ответа не трогаем
            this.templateCompetenceVisualOption.setValue(this.lastActiveVisualOption);
        }
    });
}
Svarte 16/11/2019 kl. 09:29
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more