【问题标题】:ngFor generated input fields get different values - Angular 2ngFor 生成的输入字段获得不同的值 - Angular 2
【发布时间】:2018-08-29 19:51:59
【问题描述】:

当我点击按钮时,我有两个(或更多)输入字段。目前,当我开始在任何字段中输入内容时,它也会使用该 ngModel 填充其他字段。

我需要为它自己制作每一行,这样当我点击其他按钮时,它会获取所有输入值并将它们逐行推送到数组中,因此 json 应该看起来像这样:

[{"name":"aaa", "data":"111"},{"name":"bbb", "data":"222"},{"name":"ccc", "data":"333"}]

Plunker 在这里:plunker

【问题讨论】:

  • 您的问题中没有 JSON...
  • 无论如何,您将对现有对象的引用推送到数组中。试试this.properties.push({...this.property})

标签: angular input binding ngmodel


【解决方案1】:

我认为您需要的是以下内容。

@Component({
selector: 'my-app',
template: `
        <div *ngFor="let prop of properties; let i=index">
            <input type="text" placeholder="name" [(ngModel)]="prop.name"/>
            <input type="text" placeholder="data" [(ngModel)]="prop.data"/>
        </div>
    <button (click)="createRow()">Add row inputs</button>
    <button (click)="addRow()">show array input rows</button>
`,
})
export class App {
    // property = { name:"", data: "" };
    properties = [];

    createRow(){
        this.properties.push({ name:"", data: "" });
    }

    addRow() {
        console.log(this.properties);
    }
}

plunk 里面没有很多东西,所以我不知道你打算用这个去哪里。

*ngFor 的 let 部分之后添加let i=index 可以获得数组中当前项的索引。您可以在 [(ngModel)] 中使用它来告诉 Angular 从一行到下一行绑定什么。

【讨论】:

  • 是的,这正是我所需要的...我在第二个按钮上添加了功能:plnkr.co/edit/DSai2pfceIIBUxfSty0g?p=preview ...但由于某种原因,经过您的更正,我仍然没有捕获数组中的值当它在 console.log 中显示时
  • 一个小提示:使用以下语法模板会更简单:[(ngModel)]="prop.name"
  • @ConnorsFan 确实会!更新了答案。谢谢。
猜你喜欢
  • 2018-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-15
  • 2016-08-01
相关资源
最近更新 更多