模型中的打字稿方法给出错误“不是函数”[重复]

Posted

技术标签:

【中文标题】模型中的打字稿方法给出错误“不是函数”[重复]【英文标题】: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 提供的上述代码不起作用。 【参考方案1】:

这样的 Http 调用:

this.claimProviderService.getCurrentClaimProvider(id)

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

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

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

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

【讨论】:

黛博拉,这真的很有帮助,而且我不知道!您能否向我指出有关此行为的更多信息,或者我可以如何改进我的通话? 上面有人提供的链接可能会有所帮助:***.com/questions/22875636/… 这也可能有帮助:***.com/questions/36014161/…

以上是关于模型中的打字稿方法给出错误“不是函数”[重复]的主要内容,如果未能解决你的问题,请参考以下文章

访问数组索引时如何强制打字稿给出错误

打字稿:React Native useRef 给出错误“对象可能为空”

从打字稿中的地图检索值时,map.get 不是函数

令人困惑的“重复标识符”打字稿错误消息

使用猫鼬模型设置打字稿

打字稿错误:模块'“.../node_modules/rxjs/Rx”'没有导出的成员'SubscriptionLike' [重复]