【问题标题】:Typescript method in a model giving error "is not a function" [duplicate]模型中的打字稿方法给出错误“不是函数”[重复]
【发布时间】:2019-01-05 04:33:24
【问题描述】:

我有以下打字稿模型:

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 调用,它填充了我的对象的本地实例:

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())

然后我得到一个错误

ERROR TypeError: _this.claimprovider.slug 不是函数

我做错了什么?

编辑

这是我的 getCurrentClaimProvider 方法:

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

【问题讨论】:

  • getCurrentClaimProvider 方法里面有什么?粘贴 ClaimProvider 类的完整代码。
  • 我更新了我的问题@Arash
  • 上面提到的重复问题是 JavaScript ......不是 Angular ......并且没有解释为什么 OP 提供的上述代码不起作用。

标签: angular typescript


【解决方案1】:

这样的 Http 调用:

this.claimProviderService.getCurrentClaimProvider(id)

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

所以你有具有 id 和 name 属性的对象......但没有 实际 ClaimProvider 实例。

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

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

【讨论】:

猜你喜欢
  • 2019-11-28
  • 1970-01-01
  • 1970-01-01
  • 2020-08-27
  • 2017-02-10
  • 2017-03-11
  • 2017-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多