角度如何从服务器中获取带有选项的下拉选择输入

时间:2018-08-07 11:59:54

标签: angular

控制台错误:

  

AddTaskComponent.html:11错误TypeError:无法读取> undefined的属性“名称”      在Object.eval [作为updateDirectives]

html:

<select ng-model="memberlist">

    <option ng-repeat="data in memberlist" value="{{data.name}}">{{data.name}}</option>

</select>

组件代码:

ngOnInit() {
    this.onGetMember()
}
onGetMember() {
    this.helper = this.pagedata.getMemberNames()
    this.helper.subscribe(
      res => {
        // this.memberlist = res.json();
        this.memberlist = JSON.parse(JSON.stringify(res));
        console.log("from angular component for add task: ");
        console.log(this.memberlist);
      });
  }

数据确实显示在检查器控制台上,但没有出现在下拉列表中。

  

{_ body:“ [{” name“:” A“},{” name“:” B“},{” name“:” C“}]]”,状态:200,确定:> true,statusText :“确定”,标题:{…},...…

2 个答案:

答案 0 :(得分:0)

需要访问_body属性。

另外,使用可选参数?可以防止在对象为null时引发异常

<option *ngFor="let data of memberlist._body" [value]="data?.name">{{data?.name}}</option>

答案 1 :(得分:0)

这是因为您从服务中获取的数据格式。解决方案是您必须使服务成为可观察类型。这样您就可以在订阅部分获取json。 在您的情况下,响应如下:

{_body: "[{"name":"A"},{"name":"B"},{"name":"C"}]", status: 200, ok: >true, statusText: "OK", headers: {…}, …}

它已分配给this.memberlist。

尝试this.memberlist = res.json();