angular - 无法对从模板传递的对象调用方法

标签 angular

我修改了 angular2 网站上的一个原始示例来演示问题:

http://plnkr.co/edit/Sz4i2JITJyNznIyZsNRM?p=preview

我在图 block 的点击事件中传递了一个 Hero 对象,并试图调用该对象的 .speak() 方法,但随后抛出一个错误 - hero.speak 不是一个函数。

  sayHeroName(hero: Hero) {
    hero.speak();
  }

在调试时我发现那个对象没有方法,只有它的属性

所以,我的问题是是否可以像这样访问对象的方法以及正确的方法是什么。

最佳答案

问题是 app/dashboard.component.ts 中的这个列表 public heroes: Hero[] = []; 中的英雄是从 填充的app/mock-heroes.ts 通过 app/hero.service.ts

当你查看 app/mock-heroes.ts 时,你会注意到它们只是普通的 JS 对象,这就是为什么它们没有 speak() 方法.

为了实现您的目标,您需要修改 app/mock-heroes.ts 以返回 new Hero(); 的列表,并修改 app/Hero.ts 构造函数接受 idname 作为参数。

修改 app/hero.service.ts 以创建 new Hero(); 对象实例列表,基于 app/mock- heroes.ts.

我希望这会把你推向正确的方向。

关于angular - 无法对从模板传递的对象调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35487373/

相关文章:

javascript - 如何删除 ionic 中 ion-row 和 ion-col 的空间(边距/填充)?

如果我单击同一个 anchor 两次,使用片段哈希的 Angular 路由将不起作用

arrays - 使用 Typescript 创建动态对象来重新组织 API 响应

angular - 在nebular开发的ngx-admin中将侧边栏更改为右侧

javascript - Angular 2在点击时增加动画边距

angular - 找不到模块 "@angular/common/http"

javascript - Angular 一个项目有 2 种不同的配置

javascript - 与 RxJS 流冲突的条件语句

angular - 带有空对象的补丁值

html - 当用户发送搜索表单时显示图像