TypeError: Object doesn't support property or method 'map' - AngularJS2
TypeError: Object doesn't support property or method 'map' - AngularJS2
我有一个服务文件,它在某些条件下 return 是一个可订阅的结果(显然是在进行 http 调用),而在其他一些条件下 return 是一个普通对象。由于我在 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 调用,它给了我上述错误。有什么方法可以 return 订阅结果,即使没有 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))
。
我有一个服务文件,它在某些条件下 return 是一个可订阅的结果(显然是在进行 http 调用),而在其他一些条件下 return 是一个普通对象。由于我在 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 调用,它给了我上述错误。有什么方法可以 return 订阅结果,即使没有 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))
。