选择取决于另一个选择-材质角

时间:2018-10-03 14:17:53

标签: html angular forms angular-material material

我想创建两个垫选择。其中之一(与reference相关)取决于type的选择。

types是一个带有在Typescript中实现的枚举的数组。

我尝试如下,但是在选择更改类型正确的引用之后,带有reference的选择为空...

<mat-form-field>
  <mat-label>Type</mat-label>
  <mat-select placeholder="Type" formControlName="type" name="type">
    <mat-option>None</mat-option>
    <mat-option *ngFor="let t of types" [value]="t">
      {{t}}
    </mat-option>
  </mat-select>
</mat-form-field>

<mat-form-field>
  <mat-label>Reference</mat-label>
  <mat-select placeholder="Reference" formControlName="reference" name="reference">
    <div [ngSwitch]="type.value">
      <div *ngSwitchCase="types[0]">
        <mat-option *ngFor="let r of deliveries" [value]="r.id">
          {{r.id}}
        </mat-option>
      </div>
      <div *ngSwitchCase="types[1]">
        <mat-option *ngFor="let r of orders" [value]="r.id">
          {{r.id}}
        </mat-option>
      </div>
      <div *ngSwitchDefault>
        <mat-option>None</mat-option>
      </div>
    </div>
  </mat-select>
</mat-form-field>

有人可以帮忙吗?也许有更好的方法吗?

顺便说一句...在没有“选择引用的情况下”创建新对象是正确的,因此此选择的逻辑可能是有罪的...

1 个答案:

答案 0 :(得分:1)

有几种方法可以避免这种情况。您可以,例如创建两个数组的数组

deliveries=[[1,2,3],[4,5],[6,7,8]]
orders=[["A","B","C"],["D","E"],["F","G","H"]]

并制作

<mat-option *ngFor let r of deliveries[myForm.get('type').value]>...</mat-option>
 //and
<mat-option *ngFor let r of orders[myForm.get('type').value]>...</mat-option>