Angular 4绑定选择控制器

时间:2017-12-04 13:44:11

标签: html angular typescript service binding

我从我的服务中获取了一个类别列表,我希望将我的控制器类别与我选择中选择的选项绑定,我尝试了:

<select class="form-control" id="category" [(ngModel)]="category">
        <option *ngFor="let category of categoryservice.getCategories()">
          {{category.name}}
        </option>
</select>

我的控制器:

category : Category = new Category(0, '', '', 0);

constructor(private categoryservice : CategoryService) { }

ngOnInit() {
}

使用此代码我收到错误: 如果在表单标记中使用了ngModel,则必须设置name属性,或者必须将表单控件定义为“standalone”&#39;在ngModelOptions中。

但我没有在表单中使用ngModel,所以我不知道可能是什么问题。

谢谢!

1 个答案:

答案 0 :(得分:0)

只需在 select

中添加名称属性即可
    <select class="form-control" name="categoryDrpDown" id="category" 
 [(ngModel)]="category">
        <option *ngFor="let category of categoryservice.getCategories()" [ngValue]="category">>
          {{category.name}}
        </option> 
     </select>

此外,您需要在ngOninit中调用 getCategories()方法,并仅在模板中使用categories数组。

<select class="form-control" id="category" [(ngModel)]="category">
        <option *ngFor="let category of categories">
          {{category?.name}}
        </option>
</select>

和内部组件

category : Category = new Category(0, '', '', 0);
categories : Category[] = []
constructor(private categoryservice : CategoryService) { }

ngOnInit() {
   this.categoryservice.getCategories().subscribe((response) => {
        this.categories = response;
   });
}