Создать новую версию-слайд по щелчку

#angular #ionic-framework

#angular #ionic-framework

Вопрос:

Я создаю многоступенчатую форму на ионном языке для отправки информации о лекарствах.

Раньше это была одна большая форма, но я хочу, чтобы она выглядела немного менее загроможденной и длинной. Я использую ion-slides для моделирования формы, и я хочу иметь возможность сделать один из слайдов доступным только при нажатии кнопки. Как я могу это сделать? Пока это мой код:

 <ion-content>
    <ion-slides>
        <ion-slide>
            <h4>Tell us about your medication</h4>
        </ion-slide>
        <ion-slide>
            <form id="addMed" #form="ngForm" (ngSubmit)="addMed(form)">
                       ```
                       some code
                        ```
            </form>
        </ion-slide>
        <ion-slide>
            <form>
                       ```
                       some code
                        ```
                <ion-button expand="full" (click)="toggleRX()">This is a prescription medication</ion-button>
                    <div *ngIf=isRX>
                        <h4>Prescription Information</h4>

                       ```
                       some code
                        ```
                    </div>
            </form>
        </ion-slide>
    </ion-slides>
  

Я хочу, чтобы div * ngIf был отдельным слайдом, но доступным только в том случае, если нажата кнопка «это лекарство, отпускаемое по рецепту». Есть ли способ сделать это?

(Я также хочу узнать больше об ion-слайдах с формами, если у кого-нибудь есть какие-либо ресурсы по этому вопросу, но это просто бонус)

Комментарии:

1. В чем проблема с вашим кодом? Попробуйте использовать [скрытую] привязку?

Ответ №1:

Мы можем заблокировать переход к следующему слайду, если не нажата наша предписанная кнопка, после нажатия мы перейдем к любому слайду #, который мы хотим — и как только слайд будет переведен, мы снова заблокируем возможность перехода к слайду (чтобы пользователь не переходил к нему самостоятельно — единственный способ для них перейти к другому слайду — только с помощью кнопки)

Проверьте домашнюю вкладку в демо-версии stackblitz здесь

home.ts читается как:

 import { Component, ViewChild } from '@angular/core';
import { NavController } from 'ionic-angular';
import { Slides } from 'ionic-angular';

@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {
  @ViewChild(Slides) slides: Slides;

  slideOpts;
  constructor(public navCtrl: NavController) {
    this.slideOpts = {
      effect: 'flip'
    };
  }

  ionViewDidEnter() {
    //lock manual swipe for main slider
    this.slides.lockSwipeToNext(true);
    this.slides.lockSwipeToPrev(true);
  }

  slideToSlide() {
    if (this.slides.getActiveIndex()   1 === this.slides.length()) {
      this.slides.slideTo(0);
    } else {
      this.slides.lockSwipeToNext(false);
      this.slides.slideTo(this.slides.getActiveIndex()   1);
      this.slides.lockSwipeToNext(true);

    }
  }

}
  

home.html это:

 <ion-header>
    <ion-navbar>
        <ion-title>Home</ion-title>
    </ion-navbar>
</ion-header>

<ion-content padding>
    <ion-slides>
        <ion-slide>
            <h4>This is the first slide</h4>
            <button type="button" (click)="slideToSlide()">Next</button>
        </ion-slide>
        <ion-slide>
            <h4>This is the second slide</h4>
      <button type="button" (click)="slideToSlide()">Next</button>
        </ion-slide>
        <ion-slide>
            <h4>This is the third slide</h4>
      <button type="button" (click)="slideToSlide()">Next</button>
        </ion-slide>
    </ion-slides>
</ion-content>
  

Комментарии:

1. lqbal, что, если кто-то захочет вернуться к предыдущей форме?