加入收藏 | 设为首页 | 会员中心 | 我要投稿 衡阳站长网 (https://www.0734zz.cn/)- 数据集成、设备管理、备份、数据加密、智能搜索!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

html – Angular – 基于用户输入的构建表单

发布时间:2020-12-24 09:24:31 所属栏目:资源 来源:网络整理
导读:我正在构建一个应该是动态的Web表单. 当用户从列表中选择选项时,将根据其输入生成下一个表单输入. 例如: mat-form-field mat-select placeholder="Type" [(ngModel)]="row.Type" (change)="TypeChosen(row.Type,row)" mat-option [value]="0"Treatment/mat-

我正在构建一个应该是动态的Web表单.
当用户从列表中选择选项时,将根据其输入生成下一个表单输入.
例如:

<mat-form-field>
     <mat-select placeholder="Type" [(ngModel)]="row.Type" (change)="TypeChosen(row.Type,row)">
         <mat-option [value]="0">Treatment</mat-option>
         <mat-option [value]="1">Travel</mat-option>
         <mat-option [value]="2">Medication</mat-option>
         <mat-option [value]="3">Equipment</mat-option>
     </mat-select>
</mat-form-field>

如果他选择类型’治疗’,他会得到另一个选择输入,其中包含一些其他输入的选项,如果他选择不同的类型,他会得到不同的选项和其他输入.

我知道我需要动态生成HTML内容,也许是动态组件.
以简单的方式做到这一点的最佳方法是什么?

解决方法

我建议为每个子表单创建一个组件,然后根据所选选项* ng它们,如下所示:
<!-- component.html -->

<mat-form-field>
  <mat-select placeholder="Type" [(ngModel)]="row.Type" (change)="onTypeChosen(row.Type,row)">
    <mat-option [value]="0">Treatment</mat-option>
    <mat-option [value]="1">Travel</mat-option>
    <mat-option [value]="2">Medication</mat-option>
    <mat-option [value]="3">Equipment</mat-option>
  </mat-select>
</mat-form-field>

<my-treatment-component *ngIf="type === 0" [someInput]="'some value'"></my-treatment-component>
<my-travel-component *ngIf="type === 1" [somethingElse]="true"></my-travel-component>
<my-medication-component *ngIf="type === 2" (someOutput)="onMedicationOutput($event)"></my-medication-component>
<my-equipment-component *ngIf="type === 3"></my-equipment-component>

如果您已经拥有类型选择的东西,则可以将其绑定到* ngIfs.如果没有,请在控制器类中创建一个字段,并在其中保留所选类型.

// component.ts

public type: number | null = null;

public onTypeChosen(type: number,row): void {
  this.type = type;
}

如果您的子表单具有可重用的部分(或基本相同,无配置),通常将可重用代码提取到组件中并将它们组合在一起是一种很好的做法.

希望这有所帮助 :-)

(编辑:衡阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读