为了账号安全,请及时绑定邮箱和手机立即绑定

“订阅”类型缺少“Observable<StringMap<any>>”类型中的以下属性

“订阅”类型缺少“Observable<StringMap<any>>”类型中的以下属性

大话西游666 2021-09-30 13:57:56
错误:“订阅”类型缺少“可观察>”类型中的以下属性:_isScalar、源、运算符、电梯和其他 6 个。ts(2740)在这里我附上了我的代码。在这里,在我的例子中,我有两个方法返回一个可观察的,但是 getByTypeData 和 getByType。但是,在从 getByTypeData() 返回 this.getByType(type).. 时,我遇到了上述错误。PS:我想在我的组件中订阅 getByTypeData 应该返回一个可观察的。我是 RXJS 的新手...  /*   interface IStringMap<T> {        [index: string]: T;    }    */    getByTypeData(type: string, ignoreApi = false): Observable<stringMap<any>> {        if (ignoreApi) {            this.handleConfig(type);        }        return this.getByType(type)            .subscribe(response => {                const config = response.result ? response.data : {};                return this.handleConfig(type, config);            });    }  // This method in another file (Just for reference)    getByType(type: string): Observable<stringMap<any>> {        return this.httpClient.get(`get url`);    }      handleConfig(type: string, config: stringMap<string | number> = {}): Observable<stringMap<any>> {        if (type === this.types) {            config.token = this.anotherservice.GetKey('mykey');            if (config.token) {                // logic            }        }        if (type === this.types) {            // logic        }        return of(config);    }
查看完整描述

1 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

正如评论中指出的那样,您返回的是 aSubscription而不是返回Observable. 我建议您阅读文档以了解它们之间的区别。


在您的特定情况下,我建议您尝试以下操作:


getByTypeData(type: string, ignoreApi = false): Observable<stringMap<any>> {

    if (ignoreApi) {

        return this.handleConfig(type);

    }

    return this.getByType(type).pipe(

        switchMap(response => {

            const config = response.result ? response.data : {};

            return this.handleConfig(type, config);

        })

    );

}

switchMap 是一个需要使用如下语句导入的 rxjs 运算符:


import { switchMap } from 'rxjs/operators'

可以在此处找到有关此运算符的文档

一篇解释映射运算符的好文章在这里


查看完整回答
反对 回复 2021-09-30
  • 1 回答
  • 0 关注
  • 309 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信