【发布时间】:2019-05-29 15:08:45
【问题描述】:
如何将obj.category 转换为下面示例中的Category 类型?
我需要这个来设置下拉列表中的选定选项。
export class Category{
id: number;
name: string;
constructor(obj: any) {
this.id = obj.id;
this.name = obj.name;
}
}
export class Post {
category: Category[];
constructor(obj: any) {
this.category = obj.category;
}
}
类别服务如下所示:
getCategories(): Promise<Category[]> {
return this.http.get(this.appConfig.apiEndpoint + 'categories/').toPromise()
.then(response => response.json().map(obj => new Category(obj)))
.catch(this.handleError);
}
API 响应:
[{"id":1,"name":"cat1"},{"id":2,"name":"cat2"}]
模板:
<select multiple name="category" [(ngModel)]="obj.post.category">
<option *ngFor="let category of categories" [ngValue] = "category">
{{category.name}}
</option>
</select>
【问题讨论】:
-
在你的代码中
Post被声明为一个接口,它应该是一个类。Category也是接口还是类?如果它是一个接口并且obj.category具有与预期接口相同的形状,那么您的代码应该可以正常工作 -
类别为
export class -
obj.category是一个具有什么运行时形状的对象?您应该提供更多信息。obj的例子是什么,Category类是什么样的? -
@TitianCernicova-Dragomir 我在我的代码中添加了更多细节。
obj.category与 Category api 响应具有相同的结构。如果不将export class Category更改为界面,它可以工作吗? -
你得到了什么错误,代码看起来没问题,你获取响应数组并使用
map将其转换为Category的数组
标签: angular typescript