【问题标题】:How to call get method from a class in Angular 2如何从Angular 2中的类调用get方法
【发布时间】: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


【解决方案1】:

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

你需要打电话给this.menus.yourName.getName()

【讨论】:

  • 知道了!我终于做到了:this.menus[name].getName();它工作正常。谢谢。 :)
【解决方案2】:

你只是喜欢这样

获取 getName(){

return this.name;

}

你的家庭组件:-

导入菜单组件收听

git id 让 a = Menu.getName;

【讨论】:

    猜你喜欢
    • 2016-12-09
    • 2016-09-20
    • 2017-10-07
    • 1970-01-01
    • 2017-03-20
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2018-08-30
    相关资源
    最近更新 更多