javascript - Angular 2 Html 选择模型与选项值不匹配

标签 javascript html angular2-template angular2-forms

我有 2 个数组,其中 1 个数组值绑定(bind)到选择下拉值。 在清除另一个数组时,我只想渲染一个选项。 代码如下:

组件

@Component({
  selector: 'my-app',
  templateUrl : 'app/app.html'
})
export class AppComponent {
  arrToClear = [1,2,3,4];
  arrToBind = ["NONE", "SOME", "OTHER"];
  modelToBind = 'NONE';

}

查看

<小时/>
MODEL -> {{modelToBind}}
<button type='button'(click)="arrToClear.length = 0; modelToBind = 'NONE'">Clear Array </button>


<select class="form-control"
                            id="someId"
                            name="someName"
                            [ngModel]="modelToBind"
                            #someName="ngModel"
                            >
                      <ng-container *ngIf="arrToClear.length">
                        <option *ngFor="let data of arrToBind"
                                [ngValue]="data"> {{data}}
                        </option>
                      </ng-container>
                      <option value="NONE" *ngIf="!arrToClear.length">
                        Value
                      </option>
                    </select>

问题是,当我清除“arrToClearArr”数组时,我选择的值为空。它应该绑定(bind)到“A”,因为我的模型包含“A”。

此外,我只想要单向绑定(bind),因此我使用了 [ngModel]。

我在这里缺少什么?任何帮助将不胜感激。 谢谢。

Plunker Link

<小时/>

预期行为:

  1. 更改下拉值
  2. 点击“清除阵列”按钮
  3. 下拉值应为“A”,目前为“”

最佳答案

这是可选的,但就我个人而言,我不会使用 [ngModel] 并尝试使用模板驱动的表单来解决此问题,因为我相信直接绑定(bind)变量会更清晰。就像您一样用 for 循环做了。

<select class="form-control" id="someId" formControlName="someName" name="someName">
  <ng-container *ngIf="arrToClear.length">
    <option *ngFor="let data of arrToBind" [value]="data"> {{data}}</option>
  </ng-container>
  <option [value]="modelToBind" *ngIf="!arrToClear.length">{{modelToBind}</option>
</select>

或者,您可以不保持所有内容相同,只编辑最后一个选项。

<select class="form-control" id="someId" [ngModel]="modelToBind" #someName="ngModel" name="someName">
  <ng-container *ngIf="arrToClear.length">
    <option *ngFor="let data of arrToBind" [ngValue]="data"> {{data}}</option>
  </ng-container>
  <option [value]="modelToBind" *ngIf="!arrToClear.length">{{modelToBind}</option>
</select>

关于javascript - Angular 2 Html 选择模型与选项值不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44669971/

相关文章:

javascript - 如何在 Javascript 中更改关键帧的 CSS 属性?

javascript - 添加单选按钮的值

php - 当我将数据输入到进行 php 更新查询的 html 文件时,如何获取更新的数据以反射(reflect)?

javascript - 无法从未定义中读取属性 "texture"

javascript - IE toDataUrl() 安全错误

c# - 如何正确获取Json值?

Jquery冲突问题

angular - 结构指令的上下文未更新

Angular 2 - 刷新 ngx-datatable 列表问题

angular - 如何在 Angular 2+ 中包含模板部分