Angular 2 模型函数插值 - self.context.$implicit.X 不是函数

Angular 2 model function interpolation - self.context.$implicit.X is not a function

全部,

我在尝试绑定到模型上的函数时遇到错误

我有以下组件、模型和 Html(对于这个例子都是假的)

export class TestModel {    
  public getSomeValue(): string {
     return "Hello World";
  }
}

让我们假设 testModels 属性 以某种方式获取数据。

@Component(...)
public class MyComponent {    
  public testModels: TestModel[];

  ngOnInit() {
    this.loadData();
  }

  public loadData(): void
  {
     this.http.get("...")
     .map(r=>r.json as TestModel[]) // <--- I think now you've asked the question, I see the problem on this line
     .subscribe(d=>this.testModels = d);

  }
}

现在在我的 html

<div *ngFor="let testModel of testModels">
  <span>{{testModel.getSomeValue()}}</span> <!-- This fails -->
</div>

这是完整的错误:

error_handler.js:48 EXCEPTION: Error in ./MyComponent class MyComponent- inline template:94:56 caused by: self.context.$implicit.getSomeValue is not a function

无法绑定到 .getSomeValue() 还是我做错了?

我假设基于这个 self.context.$implicit. 它正在以某种方式失去它的上下文并且没有在模型上调用方法而是试图在 "it's self" 上调用它那是什么?

谢谢

S

编辑:添加代码以显示如何实例化 testModels

as TestModel[] 不会变成 TestModel。它只是告诉打字稿编译器(和 linter)它可以安全地假设 r.jsonTestModel[].

另见 JSON to TypeScript class instance?

您可以在打字稿中添加 getter class

export class Person {
    firstname: string;
    lastname: string;
    get name(): string {
        return `${this.firstname} ${this.lastname}`;
    }
}