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

错误:“订阅”类型缺少“可观察>”类型中的以下属性:_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);

    }


大话西游666
浏览 310回答 1
1回答

三国纷争

正如评论中指出的那样,您返回的是 aSubscription而不是返回Observable. 我建议您阅读文档以了解它们之间的区别。在您的特定情况下,我建议您尝试以下操作:getByTypeData(type: string, ignoreApi = false): Observable<stringMap<any>> {&nbsp; &nbsp; if (ignoreApi) {&nbsp; &nbsp; &nbsp; &nbsp; return this.handleConfig(type);&nbsp; &nbsp; }&nbsp; &nbsp; return this.getByType(type).pipe(&nbsp; &nbsp; &nbsp; &nbsp; switchMap(response => {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; const config = response.result ? response.data : {};&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return this.handleConfig(type, config);&nbsp; &nbsp; &nbsp; &nbsp; })&nbsp; &nbsp; );}switchMap 是一个需要使用如下语句导入的 rxjs 运算符:import { switchMap } from 'rxjs/operators'可以在此处找到有关此运算符的文档一篇解释映射运算符的好文章在这里
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript