模型中的Typescript方法给出错误“不是函数”

时间:2018-07-28 05:20:07

标签: angular typescript

我有以下打字稿模型:

export class ClaimProvider {
    id: string;
    name: string;

    slug(): string {
        let result = this.name.trim().toLowerCase();
        result = result.toLowerCase();
        result = result.replace(/&/g, '_');
        result = result.replace(/ /g, '_');
        return result;
    }
}

现在在Angular组件中,我得到一个API调用,该API填充了对象的本地实例:

claimprovider: ClaimProvider;

this.claimProviderService.getCurrentClaimProvider(id)
  .pipe(first())
  .subscribe(
    result => {
      this.claimprovider = result;
      console.log(this.claimprovider);
    }
}

我的console.log结果会正确显示名称和ID,以便我的API调用正常工作。

我的问题是,如果我打电话给同一点:

console.log(this.claimprovider.slug())

然后我得到一个错误

  

错误TypeError:_this.claimprovider.slug不是函数

我在做什么错了?

修改

这是我的getCurrentClaimProvider方法:

public getCurrentClaimProvider(claimproviderId): Observable<ClaimProvider> {
    return this.http.get<ClaimProvider>(this.baseUrl + '/GetCurrentClaimProviderHeader?claimproviderid=' + claimproviderId);
}

1 个答案:

答案 0 :(得分:3)

这样的Http调用:

this.claimProviderService.getCurrentClaimProvider(id)

将服务器返回的结果映射到具有与定义的接口或类相同的属性的对象,但不将该类的实际实例作为对象。

因此,您具有具有id和name属性的对象……但没有 actual ClaimProvider实例。

您将必须手动将返回的数据映射到该类的实例。

例如,您可以查看以下内容:Angular - TypeError: Converting circular structure to JSON