【发布时间】:2017-02-17 01:16:15
【问题描述】:
我在 Angular 2 中使用类数据模型。
在我的 Home 组件中,我从服务器接收数据并存储在这些类中。
我的问题是,我现在已经创建了 get 方法,例如:
@Injectable()
export class Menu {
name: string;
categories: { [name: string]: Category };
constructor(data: { name: string }) {
this.name = data.name;
this.categories = {};
Object.keys(data).forEach(name => {
if (name !== "name") {
this.categories[name] = new Category(data[name]);
}
});
}
getName(){
console.log("Menu name: " + this.name);
}
}
如何从我的 Home 组件调用这个 getName 方法?
在我的 Home 组件中,我有:
getMenus() {
this.globals.getMenus().subscribe(
data => {
this.menus = {};
Object.keys(data).forEach(name => {
this.menus[name] = new Menu(data[name]);
});
**this.menus.getName();**
console.log(this.menus);
},
err => { console.log(err) }
);
}
this.menus.getName() 给我一个错误,它说:“类型'{[name: string]: Menu;}' 上不存在属性getName()”
但是,console.log(this.menus) 正确打印了所有 Menu 对象(带有字段名称和类别字段(允许 Category 类型的对象)。
我知道我可能做错了,但我不知道任何其他方法。
有什么想法吗?
谢谢。
【问题讨论】:
-
添加你的 Home 组件构造函数
-
因为
this.menus[name] = new Menu(data[name]);这行。this.menus是菜单图。您收到的错误消息正是如此。
标签: angular typescript ionic2