angular - 类型错误 : Object doesn't support property or method 'map' - AngularJS2

标签 angular http rxjs angular2-services subscribe

我有一个服务文件,它在某些情况下返回可订阅的结果(显然是进行 http 调用)并在其他情况下返回普通对象。由于我在 component.ts 中使用了 .subscribe 来调用此服务方法,因此在 http 的条件下出现“TypeError: Object doesn't support property or method 'map'”电话没有发生。

component.ts 文件代码

    this.myservice.userAuthenticate( 'user' ).subscribe(result => {

        console.log('results', result);
    });

我的服务文件是这样的

    public userAuthenticate(user ): Observable<any> {

    const expired = this.expiry.hasExpired();
    if ( expired ) 

            return this.userService.generateUserId('some input' ).map( data => {
                this.CheckUser( User);
                return <any>userInfo;
            } );
        }
    } else {

        return this.CheckUser( User).map( response => {
            return <any>userInfo;
        } );
    }

在其他部分,Im 只是从存储中获取数据并使用 CheckUser 方法对其进行处理。没有发生 http 调用,它给了我上述错误。有什么方法可以在没有 http 调用的情况下返回可订阅的结果吗?

一个解决方法是从组件文件中进行检查并只订阅第一部分,但我必须在很多地方进行与此特定方法在许多地方相同的更改。谁能告诉我如何在其他情况下给出可订阅的响应?

最佳答案

所以问题是 this.CheckUser(User) 没有返回 Observable。

我不完全确定你的代码做了什么以及你为什么 this.CheckUser(User)map 链接而上面你不是哪个好令人困惑,但您仍然可以使用 Observable.of() 包装方法调用:

return Observable.of(this.CheckUser(User)).map(response => {
  return <any>userInfo;
});

如果您希望仅在订阅此链后调用回调,最终您可以使用 Observable.defer(() => this.CheckUser(User))

关于angular - 类型错误 : Object doesn't support property or method 'map' - AngularJS2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49507056/

相关文章:

javascript - 在 Angular 中使用 shareReplay(1) - 仍然调用 http 请求?

javascript - RxJS如何根据点击次数连续采样数据?

node.js - 在服务器上通过 Http 请求的 URL 必须是绝对的

Angular 错误 : "Can' t bind to 'ngModel' since it isn't a known property of 'input' "

javascript - "echarts"' has no exported member named ' EChartOption '. Did you mean ' EChartsOption' 代替?

带有 get(和其他)请求的 Angular 发送 token

javascript - 如何在 Angular 中仅模拟特定的 http 资源(URL)

http - 为什么 Firefox 不重新下载页面上已有的图像?

javascript - 将 API 请求从使用 Promise 迁移到 Observable(使用 axios)

php - 禁止用户访问我的站点的有效方法是什么?