【问题标题】:Two way Binding in Angular using Select List使用选择列表在 Angular 中进行两种方式绑定
【发布时间】:2018-05-01 13:42:59
【问题描述】:

我希望在 Angular v5 中设置双向绑定,特别是使用 Angular Material 选择列表。

我基本上有以下示例代码,它是来自 HTML 表的 sn-p,并假设在屏幕上呈现时,只会出现两行,即:

<tr *ngFor="let currentHero of currentHeroes; let in = index-{{in}}">
  <td>
    <mat-form-field>
      <mat-select [(ngModel)]="currentHero.product" name="product">
        <mat-option *ngFor="let product of products" [value]="product">
          {{product}}
        </mat-option>
      </mat-select>
    </mat-form-field>                            
  </td>
</tr>

使用上面的代码,它在两行上显示两个选择下拉列表,我想要实现但不确定如何做的是,当用户从第一个选择下拉列表中选择产品时第 1 行,我希望相同的产品选择反映在第 2 行的第二个选择下拉列表中。

我基本上希望第一个选择列表也控制第二个选择列表,即如果我选择“烤面包机”,那么这个“烤面包机”也设置在第 2 行选择列表中。

这是我需要保持的设计。

【问题讨论】:

    标签: angular angularjs-directive angular-ngmodel


    【解决方案1】:

    您需要在select 元素上使用[(value)]="..." 才能进行双向绑定。

    <mat-form-field>
      <mat-select [(value)]="selected">
        <mat-option>None</mat-option>
        <mat-option value="option1">Option 1</mat-option>
        <mat-option value="option2">Option 2</mat-option>
        <mat-option value="option3">Option 3</mat-option>
      </mat-select>
    </mat-form-field>
    
    <mat-form-field>
      <mat-select [(value)]="selected">
        <mat-option>None</mat-option>
        <mat-option value="option1">Option 1</mat-option>
        <mat-option value="option2">Option 2</mat-option>
        <mat-option value="option3">Option 3</mat-option>
      </mat-select>
    </mat-form-field>
    

    这样,一个元素中的任何选择都将反映在另一个元素中 (demo)。

    【讨论】:

    • 您好,使用示例解决方案,我更新了上面的代码,因为我需要使用带有 ngModel 设置的 ngFor。我想要的是每一对选择我必须彼此不同。基本上,使用您的示例,当我更改选项时,一个选项会反映在第二个选项中,这是完美的。现在假设我有另一对选择,我现在想要实现相同的选择,但我不希望它改变第一对的值等等。希望这是有道理的。
    • @tonyf,在这种情况下,您可以创建一个大小为 currentHero.length / 2 的数组(所以它是英雄数量的一半)和每个偶数元素(以 % 2 === 0 ),数组的新索引被用作模型
    • 不确定我是否完全理解您的评论,但我已经更新了 demo 以获得不同的配对。这就是你要找的吗?
    • 另外,只是好奇,你为什么会出现这种情况?
    • @bugs - 会看一看。我有一个“新建”按钮,它根据唯一的名称编号创建两个选择列表,即 pair-01-GROUPA 和 pair-01-GROUPB,如果他们再次按“新建”按钮,这将创建另一对,但将是 pair-02-GROUPA 和 pair-02-GROUPB,因此当他们对 pair-01-GROUPA 或 pair-01-GROUPB 进行选择时,选择值将相同。但是在新的 pair-02-GROUPA 和 pair-02-GROUPB 上,这个选择会有所不同,并且不希望这会改变对 pair-01-GROUPA 和 pair-01-GROUPB 的选择值。希望这是有道理的。
    猜你喜欢
    • 1970-01-01
    • 2020-05-31
    • 1970-01-01
    • 2017-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多