javascript - 创建没有 Angular ui 路由器的多步表单

标签 javascript angular typescript angular2-forms

please look image description here我需要在不使用 Angular UI 路由器和 Angular Material 的情况下创建一个多步骤表单。 谁能帮帮我。

<div class="wizard">
  <a routerLinkActive="active" [routerLink]="['/customer-dashboard/customer-information/information-form']" [routerLinkActiveOptions]="{exact: true}">
      Submit Information
  </a>
  <a [class.disabled]="idTab" routerLinkActive="active" [routerLink]="['/customer-dashboard/customer-information/id-form']" [routerLinkActiveOptions]="{exact: false}">
      Submit Id
  </a>
  <a  routerLinkActive="active" [routerLink]="['/customer-dashboard/customer-information/verify-identity']" [routerLinkActiveOptions]="{exact: false}">
      Verify Identity
  </a>
  <a routerLinkActive="active" [routerLink]="['/customer-dashboard/customer-information/final-validation']" [routerLinkActiveOptions]="{exact: false}">
    Final Validation
  </a>
  <a routerLinkActive="active" [routerLink]="['/customer-dashboard/customer-information/approval']" [routerLinkActiveOptions]="{exact: false}">
    Approval
  </a>
</div>

最佳答案

工作 CodesandBox

app.component.html

<div>
  <span class="state-container" [ngStyle]="state === 1 && {'color': 'red'}"
    >state 1</span
  >
  <span class="state-container" [ngStyle]="state === 2 && {'color': 'red'}"
    >state 2</span
  >
  <span class="state-container" [ngStyle]="state === 3 && {'color': 'red'}"
    >state 3</span
  >
</div>
<div *ngIf="state === 1">
  <form #f1="ngForm" (ngSubmit)="onSubmit(user)" novalidate>
    <label for="name">Name</label>
    <input name="name" id="name" [(ngModel)]="user.name" />
    <label for="family">Family</label>
    <input name="family" id="family" [(ngModel)]="user.family" />
    <button (click)="next(user)">Next</button>
  </form>
</div>
<div *ngIf="state === 2">
  <form #f2="ngForm" (ngSubmit)="onSubmit(user)" novalidate>
    <label for="address">Address</label>
    <input name="address" id="family" [(ngModel)]="user.address" />
    <button (click)="back()">Back</button>
    <button (click)="next(user)">Next</button>
  </form>
</div>
<div *ngIf="state === 3">
  <p>The End</p>

  <button (click)="back()">Back</button>
  <button (click)="reset()">Reset</button>
  <button (click)="save(user)">Save</button>
</div>

app.component.ts

import { Component, OnInit } from "@angular/core";
interface User {
  name: string;
  family: string;
  address: string;
}
@Component({
  selector: "app-root",
  templateUrl: "./app.component.html",
  styleUrls: ["./app.component.css"]
})
export class AppComponent implements OnInit {
  title = "CodeSandbox";
  state = 1;
  user: User;
  ngOnInit() {
    this.user = {
      name: "",
      family: "",
      address: ""
    };
  }
  save(user: User) {
    alert("Final Result:\n\n" + JSON.stringify(user));
  }
  next(user: User) {
    ++this.state;
    alert(JSON.stringify(user));
  }
  back() {
    --this.state;
  }
  reset() {
    this.state = 1;
    this.user = {
      name: "",
      family: "",
      address: ""
    };
  }
}

app.module.ts

import { BrowserModule } from "@angular/platform-browser";
import { NgModule } from "@angular/core";

import { AppComponent } from "./app.component";
import { FormsModule } from "@angular/forms";

@NgModule({
  declarations: [AppComponent],
  imports: [BrowserModule, FormsModule],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule {}

我个人不推荐这种方法。请记住,如果您不保存数据并刷新页面,您的数据就会消失。

关于javascript - 创建没有 Angular ui 路由器的多步表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56804948/

相关文章:

javascript - 如何对一个 textarea 组件的文本值进行数据绑定(bind)并更新它?

javascript - 如何从innerHTML/textContent javascript获取日期

css - 如何使 Angular2 中的导航栏突出显示?

typescript :polymorhpic this,重载签名与函数实现不兼容

typescript - TS1183 : implementation cannot be declared in ambient context in Typescript

angularjs - 我们可以将 TypeScript 迁移到 Google AtScript 吗?

javascript - 防止XmlHttpRequest递归调用服务器

javascript - 使用请求并让回调在函数内工作的异步调用

javascript - 在输入字段中的文本输入后添加单位 Angular 5

Angular 渲染的 DOM html 自定义属性