在Angular 4.3中从http.get返回的JSON操作

时间:2017-10-12 19:59:50

标签: javascript json angular typescript

在我的my中,我试图通过JSON向表单构建器提供动态表单控件,类似于angular.io中的动态表单教程。我无法操作从http.get()请求返回的JSON数据。我可以console.log整个对象,但如果我尝试记录一个子对象,我得到" undefined"在控制台中。

这是我的组件文件:

export class TestComponent implements OnInit {

dataSource: Observable<any>;
questions: QuestionBase<any>[] = [];
results: QuestionBase<any>[] = [];

constructor(private http: HttpClient) {
  this.dataSource = this.http.get('/questions');
}

ngOnInit() {
      this.dataSource.subscribe(
          data => {
              this.results = data['contactInfo'];
              console.log(this.results[0].controlType);
              this.results.forEach((item: QuestionBase<any>) => {
                  if(item.controlType == 'text') {
                      console.log(item.controlType);
                      this.questions.push(new TextQuestion(item));
                  }
                  else if(item.controlType == 'dropdown') {
                      console.log(item.controlType);
                      this.questions.push(new DropdownQuestion(item));
                  }
              });

              console.log(this.questions);
          },
          err => {
              console.log("Cannot get JSON data. Error Code: %s, URL: %s",
                  err.status, err.url)
          },
          () => console.log('Done')
      );
   }
}

在data =&gt;中{}回调,如果我是console.log(请求),控制台就会显示整个对象。我甚至可以读取模板中的子对象。但是,如果我尝试使用console.log或使用上面代码中的子对象执行任何其他操作,例如forEach()方法,我得到&#34; undefined&#34;在控制台上。我究竟做错了什么?

编辑:以下是JSON代码段:

{
"contactInfo": [
{
  "key": "firstName",
  "globalLabel": "First Name",
  "controlType": "text",
  "required": "true",
  "order": "1"
},
{
  "key": "lastName",
  "globalLabel": "Last Name",
  "controlType": "text",
  "required": "true",
  "order": "2"
},
{
  "key": "streetAddress",
  "globalLabel": "Street Address",
  "controlType": "text",
  "required": "true",
  "order": "3"
}, ...}]

编辑#2更新JSON文件后,我无法重启我的节点服务器&#34; controlType&#34;使用简单的&#34;类型的早期版本。&#34;我认为服务器会自动提供新编辑和保存的文件,但似乎必须重新启动服务器才能执行此操作。问题已关闭

0 个答案:

没有答案