无法填充选择器,无法读取属性' name'未定义的,

时间:2017-11-16 21:46:33

标签: angular http

我试图从BE获取一些字段以映射到我的FE类。 然后我希望字段上的名称填充选择器及其选项。

这是服务

export class FieldsService {

  constructor(private _http: Http) { }

  public getFields(): Observable<Response> {
    return this._http.get('/api/fields');
  }
}

Field.class

export class Field {
    public name: string;
    public id: string;
}

Component.js

export class Component implements OnInit {

  public _fields: Field;

  constructor(private _fieldsService: FieldsService) { }

  ngOnInit() {
    this._fieldsService.getFields()
    .map(response => response.json())
    .subscribe(result => this._fields = result);
  }
}

并且最后但不是leaste,Component.html:

<pre>{{_fields | json}}</pre>
        <div class="form-group" *ngIf="_fields !== undefiend">
          <label for="exampleFormControlSelect1">Fields</label>
          <select class="form-control" id="exampleFormControlSelect1" ng-repeat="let field in _fields">
            <option>{{field.name}}</option>
          </select>
        </div>

我猜我做错了映射。 正在阅读教程,但无法看到我做错了什么。

1 个答案:

答案 0 :(得分:0)

让我们尝试用* ngFor指令替换你的ng-repeat指令。

<pre>{{_fields | json}}</pre>
<div class="form-group" *ngIf="_fields !== undefiend">
   <label for="exampleFormControlSelect1">Fields</label>
   <select class="form-control" id="exampleFormControlSelect1" *ngFor="let field of _fields">
       <option>{{field.name}}</option>
   </select>
</div>

我猜你可以使用.subscribe()方法而无需映射数据。

你注意到我使用了#field; _fields&#34;而不是&#34;在&#34;中,因为在手表中为索引而在手表值。