我在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()
向我发出错误,它说:“属性getName()在类型'{[name:string]:Menu;}'”
但是,console.log(this.menus)
会正确打印所有菜单对象(包含字段名称和类别字段(允许类型为Category的对象)。
我知道我可能做错了,但我不知道其他任何方法。
有什么想法吗?
感谢。
答案 0 :(得分:0)
在您的情况下,this.menus
是一个对象,其中包含许多Menu's
。但是,您可以在包含getName()
Menus
您需要像this.menus.yourName.getName()
答案 1 :(得分:0)
你就像这样
获取getName(){
return this.name;
}
您的家庭组件: -
导入菜单组件听取
git id 设a = Menu.getName;