美文网首页大前端开发
Angular2+通过输入框动态添加/删除键值对

Angular2+通过输入框动态添加/删除键值对

作者: 遇侎粒_duyuqin | 来源:发表于2019-05-22 16:44 被阅读35次
大致效果动态图 20190522_163307.gif

html模板部分代码

<div class="col-lg-9">
  <div *ngFor="let item of variables;let i=index">
    <input class="key-input form-control" type="text" name="variableName{{i}}" placeholder="key" [(ngModel)]="item.variableName"  />
    <input class="value-input form-control" type="text" name="variableValue{{i}}" placeholder="value" [(ngModel)]="item.variableValue" />
    <button class="" (click)="removeInput(i)">删除</button>
  </div>
  <button (click)="addInput()">增加</button>
</div>

对应ts文件代码:

// 分别保存变量键值对 的键和值
public variables: any[]=[{"variableName": "" , "variableValue": ""}]; 

// 添加键值对输入框
addInput() {
  this.variables.push({"variableName": "" , "variableValue": ""});
}

 // 删除变量键值对
removeInput(index) {
  this.variables.splice(index, 1);
}
// 点击保存按钮时,将数组中的数据处理为对象,例如:{name:'Tom', age:18}
save(){
  let variablesObj={};
    
  this.variables.forEach(item=>{
    if (item.variableName !="" && item.variableValue!="") {
      variablesObj[item.variableName] = item.variableValue
    }
  })
}

填坑心得:input中的name属性一定要用下标加以处理,要不然会有不知名bug出现,有兴趣可以试一试->_->
PS: 只展示了部分核心代码,准确性自行斟酌。另外:本人才疏学浅,若有错误或考虑不周之处,欢迎大家留言指正和探讨!
--------------------------------------------2019-5-23更新----------------------------------------------
在热心小伙伴的提醒和指导下,发现文章存在缺陷,在此更新纠正:
就本案例来讲,是不用设置name属性的,因为不是在form表单中使用input;我在项目中使用的这部分代码外层有form标签包裹,所以不设置name属性就会报错,在写文章的时候也没注意到,非常抱歉。不清楚这部分知识点的小伙伴可以自行查阅,网上很多相关资料,这里就再不赘述。
再次感谢这位热心小伙伴兼同事的提醒与指导!

相关文章

网友评论

    本文标题:Angular2+通过输入框动态添加/删除键值对

    本文链接:https://www.haomeiwen.com/subject/cpndoqtx.html