angular - 如何将 ngmodel 绑定(bind)到 ngfor 中的选择选项

标签 angular

(我在 StackOverflow 上找不到与此类似的问题,如果我错过了任何内容,请链接我) 我有一个 ngfor 循环遍历记录列表。每个记录在选择列表中都有多个操作(编辑、删除等)。我希望能够选择仅适用于记录的操作。

<tr *ngFor="let rec of records">

    <td><a href=""> {{rec.name}} </a></td>
    <td>{{rec.description}}</td>
    <td><a href=""> {{rec.date}} </a></td>
    <td>
        <select [(ngModel)]="selected" (change)="changeOption(rec);">
            <option selected disabled>Actions</option>
            <option value="editRec">Edit Record</option>
            <option value="deleteRec">Delete Record</option>
            ...more options
        </select>
    </td>
</tr>

changeOption 现在只是简单地打印出 this.selected,但是每当 ngModel 更改时,屏幕都会显示所有记录的选择值都已更改(因此,每当选择某些内容时,它们都会显示编辑/删除/等)。

这在组件文件中是可以的,因为我仍然知道选择了哪个记录和哪个操作,但从 UI Angular 来看,它看起来很奇怪。 我认为这是预期的行为,因为每个选择值都绑定(bind)到这个 ngModel,但我想知道是否可以单独绑定(bind)?

最佳答案

发生这种情况是因为您在 *ngFor 内的 [(ngModel)] 中使用了原始变量。所以每个绑定(bind)都会引用相同的变量(在本例中为selected)。要解决这个问题,您可以将 ngModel 更改为 rec.selected:

<select [(ngModel)]="rec.selected" (change)="changeOption(rec)">...

PLUNKER

关于angular - 如何将 ngmodel 绑定(bind)到 ngfor 中的选择选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44465208/

相关文章:

Angular 6 - 可观察的订阅不起作用

angular - Universal SSR 如何处理 *ngIf 中的异步管道

Angular2 Webpack 延迟加载类型错误 : Cannot convert undefined or null to object

angular - 在导航到另一个组件之前保存 Angular 2 组件中的数据

angular - 如何禁用 Angular p 日历中的 future 日期?

angular - http.get 中的 .catch() 未捕获 HTTP 500 错误代码

javascript - Angular 6 中的 CSS 间距问题

angular - 如何订阅响应式(Reactive) FormGroup 并映射值变化( Angular 6)

javascript - Angular 6 中无限双向可滚动容器

javascript - 无法绑定(bind)到 '',因为它不是 '' angular 2 的已知属性