如何从Angular 2中的类调用get方法

时间:2017-02-16 11:48:46

标签: angular typescript ionic2

我在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的对象)。

enter image description here

我知道我可能做错了,但我不知道其他任何方法。

有什么想法吗?

感谢。

2 个答案:

答案 0 :(得分:0)

在您的情况下,this.menus是一个对象,其中包含许多Menu's。但是,您可以在包含getName()

的对象上调用Menus

您需要像this.menus.yourName.getName()

一样打电话

答案 1 :(得分:0)

你就像这样

获取getName(){

return this.name;

}

您的家庭组件: -

导入菜单组件听取

git id 设a = Menu.getName;