【问题标题】:Angular reading data from json into textarea从 json 角度读取数据到 textarea
【发布时间】:2017-06-06 15:15:47
【问题描述】:

我正在尝试从本地 json 文件中读取一些测试数据,并将格式正确的数据输出到 textarea 中。现在虽然它只是输出 [object Object]。我将如何获得它以便输出:

Id: theIdGoesHere

标题:theTitleGoesHere

step.service.ts 用来调用json数据的服务

public getJson(): Observable<any>{
    return this.http.get('/assets/jsonData/MyJson.json')
      .map(response => response.json());
  }

MyJson.json

{
    "data":[
        {
            "id": 1,
            "title":"Test1"
        },
        {
            "id": 2,
            "title":"Test2"
        }
    ]
}

main.componenet.ts

private testVar: any;
test(){
    this.stepService.getJson().subscribe(data => (this.testVar = data));
  }

anothermethod(){
    this.test();
    this.mainStepText = this.testVar; //mainStepText binded to textarea with [(ngModel)]="mainStepText"
}

get mainStepText2() { //Rebinded this one
   const text = [];
    const { data } = this.testVar; 

    for (let item of this.testVar.data) {
      Object.keys(item).forEach(key => {
        text.push(key + ': ' + item[key]);
      });
    }

    return text.join('\r\n'); // \r\n is the line break
  }

【问题讨论】:

    标签: json angular typescript


    【解决方案1】:

    您可以使用json 管道将您的对象格式化为json 字符串:

    [(ngModel)]="mainStepText | json"
    

    如果要显示对象的特定属性,可以在模板中访问它:

    [(ngModel)]="mainStepText.data[0].title"
    

    这将在您的字段中显示“Test1”。

    【讨论】:

    【解决方案2】:

    您可以遍历您的 json.data 并通过它们的键来提取文本和值并生成文本区域所需的字符串。

        const text = [];
    
        for (let item of this.textVar.data) {
          Object.keys(item).forEach(key => {
            text.push(key + ': ' + item[key]);
          });
        }
    
        return text.join('\r\n'); // \r\n is the line break
    

    这是运行代码,我把它放在app.ts中:http://plnkr.co/edit/3AbQYQOW0MVBqO91X9qi?p=preview

    希望这会有所帮助。

    【讨论】:

    • 我似乎遇到了 const {data} 行的问题。错误类型错误:无法读取未定义的属性“数据”
    • 知道了,在您的真实代码中,只有在服务从文件中读取它之后,才会定义 json。您可以将其初始化为 {} 或只是回退到解构 const { data = [] } = this.json || {}; 并将 for 行更改为使用 for (let item of data) {,应该这样做。这里:plnkr.co/edit/m3pNIHLm0Shg2sDpRApZ?p=info,json 有一个未定义的值,并且从中解构数据回退到 []。有不同的方法可以绕过它。我会推荐,初始化它:plnkr.co/edit/gRo6Q3mECJ3rOZi9T9kh?p=preview
    猜你喜欢
    • 1970-01-01
    • 2020-12-13
    • 1970-01-01
    • 2020-01-16
    • 1970-01-01
    • 2019-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多