【发布时间】:2018-03-27 07:42:15
【问题描述】:
我有一个服务文件,它在某些条件下(显然是进行 http 调用)返回一个可订阅的结果,并在其他一些条件下返回一个普通对象。由于我在component.ts 中使用了.subscribe 来调用此服务方法,因此在没有发生http 调用的情况下得到“TypeError:对象不支持属性或方法'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;
} );
}
在其他部分,我只是从存储中获取数据并使用CheckUser 方法处理它。没有发生 http 调用,它给了我上述错误。即使没有 http 调用,有什么方法可以返回可订阅的结果吗?
一种解决方法是从组件文件中进行此检查,并且只订阅第一部分,但我必须在很多地方进行与此特定方法在许多地方相同的更改。谁能告诉我如何在 else 条件下给出可订阅的响应?
【问题讨论】:
标签: angular http rxjs angular2-services subscribe