Как переместить степпер с одного шага на второй, используя угловой и угловой материал

У меня 2-4 ступенчатая форма. Я выделил форму, как показано ниже. Сначала есть папка auth, затем папка register. При этом register - register.ts и register.html. Под register.html я реализовал mat stepper, как показано ниже:

 <mat-horizontal-stepper [linear]="isLinear" #stepper>

                    <mat-step [stepControl]="firstFormGroup">
                      <form [formGroup]="firstFormGroup">
                        <ng-template matStepLabel> step 1 </ng-template>
                        <mat-card class="example-card">
                                <mat-card-header>
                                    <div mat-card-avatar class="example-header-image"></div>
                                    <mat-card-title>step 1</mat-card-title>
                                </mat-card-header>
                                <mat-card-content>
                                        <kt-stepone></kt-stepone>
                                </mat-card-content>

                        </mat-card>

                        <div>

                        </div>
                      </form>
                    </mat-step>

                    <mat-step [stepControl]="secondFormGroup">
                      <form [formGroup]="secondFormGroup">
                        <ng-template matStepLabel> step 2 </ng-template>
                            <mat-card class="example-card">
                                <mat-card-header>
                                    <div mat-card-avatar class="example-header-image"></div>
                                    <mat-card-title>step 2</mat-card-title>
                                </mat-card-header>
                                <mat-card-content>
                                        <kt-steptwo></kt-steptwo>
                                </mat-card-content>
                            </mat-card>

                      </form>
                    </mat-step>

под моим register.ts :

export class RegisterComponent implements OnInit, OnDestroy {
  isLinear = true;
}

Теперь это <kt-stepone> — моя форма шага 1, которая представляет собой отдельный модуль, и там я реализовал кнопку «Далее».

Теперь, когда я реализовал isLinear = true;, даже после заполнения всей формы не было следующего шага. Если я не заполнил форму, то она работает в соответствии с ожиданиями, выделяя поля красным

Для справки, вот <kt-stepone>code :

<form class="kt-form" [formGroup]="steponeForm" autocomplete="off" (ngSubmit)="onSubmit()">
            <div class="kt-portlet__body" >
                //MY FORM
            </div>
                 // submit button
            <button mat-button matStepperNext color="primary" type="submit">Next</button>

</form>

Поскольку я впервые использую angular, скажите, пожалуйста, где я ошибаюсь в этом подходе.

Обновлен KT-STEPONE.ts:

import { MatStepper } from '@angular/material/stepper';
completed=false;
@ViewChild('stepper') stepper: MatStepper;
onSubmit(){

    this.stepper.selected.completed = true;
    this.stepper.next();
  }





person Mohammed Sabir    schedule 26.04.2019    source источник


Ответы (2)


Я думаю, что ваш степпер и кт-степон не общаются. попробуйте реализовать службу или @inpit @output, чтобы установить действительный шаг. или если ваша логика разделена, вы можете удалить [stepControl] и установить complete="false" и в своем компоненте

@ViewChild('stepper') stepper: MatStepper;
onButton() {
  this.stepper.selected.completed = true;
  this.stepper.next();
}
person Lean Pilar    schedule 26.04.2019
comment
Где я должен включить @ViewChild('stepper') stepper: MatStepper; . Должен ли я включать это перед конструктором в классе ИЛИ перед самим классом? Кроме того, MatStepper означает его MatStepperModule? @Лин Пилар - person Mohammed Sabir; 26.04.2019
comment
Пожалуйста, найдите обновленный kt-stepone.ts в соответствии с вашими инструкциями. но это будет на следующем шаге, даже если поля пусты @Lean Pilar - person Mohammed Sabir; 26.04.2019
comment
внутри класса перед конструктором в классе, где вы используете мат-горизонтальный степпер - person Lean Pilar; 26.04.2019
comment
mat-horizontal-stepper находится в моем основном файле register.html. Из мата-горизонтального-степпера я удалил [stepControl]. куда добавить completed="false", я имею в виду какой ts файл: регистр или кт-степон @Lean Pilar - person Mohammed Sabir; 26.04.2019
comment
замените [stepControl]=... на complete=false. но если у вас нет кнопки на степпере, а только внутри, попробуйте передать событие от kt-stepone к степперу, чтобы прослушать событие и запустить функцию onButton. - person Lean Pilar; 26.04.2019
comment
Ок постараюсь сделать это. Будет полезно, если вы поможете мне с примером. - person Mohammed Sabir; 26.04.2019

После RnD над этим. Наконец-то я получил рабочее решение этого. Перейдите по этой ссылке. Способ сделать это: Нам нужно связать компонент каждого шага в компоненте регистрации. Вот руководство для этого.

person Mohammed Sabir    schedule 29.04.2019