angular - ngModel 在对象键上通过 ngFor 对象属性的双向数据绑定(bind)

标签 angular object ngfor two-way-binding ngmodel

我正在使用 angular6,我正在尝试遍历我预先加载的对象的属性,以在文本字段中显示它们。属性应该是可变的。因此我需要双向绑定(bind)。
我试过:

<mat-form-field *ngFor="let key of object | keys">
  <input matInput placeholder="{{key}}" name="attribute" [(ngModel)]="object[key]">
</mat-form-field>

@Pipe({
  name: 'keys'
})
export class ObjectKeysPipe implements PipeTransform {
  transform(value: object, args: string[]): any {
    return Object.keys(value);
  }
}

我也试过

<mat-form-field *ngFor="let property of object | keysValue">
  <input matInput placeholder="{{property.key}}" [(ngModel)]="property.value">
</mat-form-field>

@Pipe({
  name: 'keyValue'
})
export class ObjectKeyValuePipe implements PipeTransform {
  transform(value: object, args: string[]): any {
    const arr = [];
    const keys = Object.keys(value);
    const values = Object.values(value);
    for (let i = 0; i < keys.length; i++) {
      arr.push({'key': keys[i], 'value': values[i]});
    }
    return arr;
  }
}

但是双向绑定(bind)不起作用。

我通过 HttpClient 从数据库中获取我的对象并在 ngOnInit() 中分配它

ngOnInit() {
this.apiService.getObject(objectId).subscribe(
  res => {
    if (res.status === 200) {
      this.object = res.body;
    }
  }
);}

还有其他可能解决我的问题吗?

最佳答案

感谢大家的帮助。 问题是所有输入字段都具有相同的名称。

关于angular - ngModel 在对象键上通过 ngFor 对象属性的双向数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52482279/

相关文章:

angular - 带有自定义参数的 ngFor trackBy 函数

javascript - 如何将 Zoom Chart 与 Angular 2 集成

angular - ionic 4 错误 "Uncaught (in promise): Error: Cannot find module ' ../home/home.module/'

javascript - 检查 JavaScript 中数组、对象、字符串和数字等数据类型的空值

java - 发现映射属性不明确的映射方法(java.util.Map 和 java.util.Object)

css - :first-child with *ngFor is not working properly

angular - 如何在 ionic 3 中单击图标时显示输入字段

未定义的 Angular 2 Jasmine 不是对象

javascript - 如何在 Javascript 中有效地合并两个数组?

html - Angular 12 - 找不到类型为 '[object Object]' 的不同支持对象 'object'。 NgFor 仅支持绑定(bind)到 Iterables,例如 Arrays