【问题标题】:Get key and value from an Object using angular 2+ [duplicate]使用角度2+从对象中获取键和值[重复]
【发布时间】:2019-11-02 01:21:28
【问题描述】:

我有一个这样的对象:

myComponent.ts

this.detailsStruct = this.newParameter.struct;
 //the value of detailsStruct is:
            //{0: "something",
            // 5: "somethingElse"}

detailsstruct 的数据来自我的 mongoDb,我希望有一个输入表单来显示我的对象的键和值。在 html 中,我做了类似的事情:

myComponent.html

<div class="form-group" *ngFor="let s of detailsStruct ; let i = index">
 <div class="input-group">
  <input type="text" class="form-control" [ngModelOptions]="{standalone: 
true}"
  [(ngModel)]="s.value" placeholder="" name="{{s[i]}}">
   </div>
</div>

我试图从我的对象中获取一些东西,但我写的东西不起作用。 有什么建议?谢谢

【问题讨论】:

  • detailsS​​truct 是对象吗?粘贴整个细节结构
  • 是的 detailsS​​truct 是一个像我上面在 myComponent.ts 的评论中描述的那样结构的对象

标签: html angular typescript


【解决方案1】:

你可以使用这种方式,我希望这对你的数据有帮助

for (let obj of this.detailsStruct) {
        for (let prop of Object.keys(obj)) {
            console.log("value-" + obj[prop]);
            console.log("key-" + [prop]);
        }
    }

【讨论】:

  • 数据来自我的数据库,所以我只能获取该格式的数据
  • 好的,你可以在第一个主对象中使用循环,然后在第二个循环中使用键和值。
【解决方案2】:

你可以试试:

<div class="form-group" *ngFor="let key of objectKeys(detailsStruct) ; let i = index">
 <div class="input-group">
  <input type="text" class="form-control" [ngModelOptions]="{standalone: 
true}"
  [(ngModel)]="detailsStruct[key]" placeholder="" name="{{detailsStruct[key]}}">
   </div>
</div>

ts:

objectKeys = Object.keys;
  detailsStruct = {0: "something",
            5: "somethingElse"}

DEMO.

【讨论】:

    【解决方案3】:

    如果detailsStruct 是一个对象,那么,

    <div class="form-group" *ngFor="let s of Object.keys(detailsStruct) ; let i = index">
     <div class="input-group">
      <input type="text" class="form-control" [ngModelOptions]="{standalone: 
    true}"
      [(ngModel)]="detailsStruct[s]" placeholder="" name="s{{i}}">
       </div>
    </div>
    

    【讨论】:

      【解决方案4】:

      请试试这个代码:链接https://stackblitz.com/edit/angular-hh82ed

      <div class="form-group" *ngFor="let s of detailsStruct ; let i = index">
       <div class="input-group">
        <input type="text" class="form-control" [ngModelOptions]="{standalone: 
      true}"
        [(ngModel)]="s[i]" placeholder="" name="{{s[i]}}">
         </div>
      </div>
      
      import {AfterViewInit, Component, ElementRef, ViewChild,Renderer2,OnInit} from '@angular/core';
      
      @Component({
        selector: 'my-app',
        templateUrl: './app.component.html',
        styleUrls: [ './app.component.css' ]
      })
      export class AppComponent  {
        constructor(private renderer: Renderer2, private el: ElementRef) {}
        detailsStruct=[];
        detailsStruct = [{0:"one"},{1:"two"}];
      }
      

      谢谢

      【讨论】:

      • 是的,我可能是一个不错的起点,但我从 mongoDb 获取数据,它们不是对象数组,而是具有键和值的对象,我希望每行有两个输入值:一个用于值和一个键。在您的情况下,我希望在一行中有“0”和“one”,在另一行中有“1”和“two”
      • 能否请您显示您从 mongoDB 获取数据的格式,我可以帮助您
      • detailsS​​truct 的值为:{0: "something", 5: "somethingElse"}
      • 我认为您应该更改获取数据的格式以便于访问
      猜你喜欢
      • 2023-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-03
      • 2021-07-16
      相关资源
      最近更新 更多