javascript - 为什么我无法调用 ngFor 内部的成员函数?

标签 javascript angular typescript

我有:

export class Foo {
    id: number;
    name: string;

    public formatName() : string {
        return this.name;
    }
}

在模板中:

<ul>
  <li *ngFor="let foo of allFoos">
    <strong>{{foo.formatName()}}</strong>
  </li>
</ul>

为什么这不起作用?我只会得到 node_modules/@angular/core/bundles/core.umd.js:3076 TypeError: self.context.$implicit.formatName is not a function

我可以通过将 formatName() 函数移至父组件并提供 foo 作为参数而不是使用 this 来解决此问题,但这不是我想要的:

<ul>
  <li *ngFor="let foo of allFoos">
    <strong>{{formatName(foo)}}</strong>
  </li>
</ul>

访问例如直接在循环中使用 foo.name 也可以正常工作:

<ul>
  <li *ngFor="let foo of allFoos">
    <strong>{{foo.name}}</strong>
  </li>
</ul>

显然,我的意图是拥有一个比我的示例中的更复杂的 formatName()

最佳答案

函数/方法几乎不应该在 {{}} 中调用,因为 Angular2 会在每个changeEvent 上更新这些语句。

在 init 时或在组件类中需要格式化时更好地格式化您的名称,并且仅使用 {{}} 的属性名称

关于javascript - 为什么我无法调用 ngFor 内部的成员函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40908646/

相关文章:

javascript - 使用 Vue 为 anchor 标记中的 href 赋值

Javascript/jQuery 粘性,不使用 css 位置 : fixed

javascript - 寻找方法来重构我创建的 div 切换的 jQuery 代码

javascript - Chrome 中启用的硬件加速可防止 Canvas 使用 Fabricjs 显示矢量图像

javascript - Angular 6 : Npm ERR! 缺少脚本:部署到 heroku 时启动

php - 在 angular2 组件中设置静态文字值

Angular 4 - 从拦截器返回 HttpErrorResponse

javascript - 访问 Sourcetree 中的旧分支时出错

Angular 2 Routing 在新选项卡中运行

javascript - 如何在 http 拦截器 Angular 中处理/检测取消的请求?