san*_*osh 1 rxjs angular-material angular angular5
我需要从订阅服务调用中返回值。这是我的代码
export class RideDataSource extends DataSource<any> {
rides: Ride[];
constructor(private _rideService: RidesService,
private _paginator: MatPaginator) {
super();
}
connect(): Observable<Ride[]> {
this._rideService.getActiveRides(this._paginator.pageIndex, this._paginator.pageSize).subscribe(
ridePage => {
this.rides = ridePage.content;
this._paginator.length = ridePage.totalElements;
}
);
// i need to return Observable.of(this.rides);
}
disconnect() {
// No-op
}
}
Run Code Online (Sandbox Code Playgroud)
返回Observable.of(this.rides)将不起作用,因为this.rides将是未定义的。有什么办法吗?
不要订阅服务,而是使用地图运算符并订阅connect():
connect(): Observable<Ride[]> {
return this._rideService.getActiveRides(
this._paginator.pageIndex,
this._paginator.pageSize
).pipe(
map(ridePage => {
this.rides = ridePage.content;
this._paginator.length = ridePage.totalElements;
return this.rides;
})
);
}
Run Code Online (Sandbox Code Playgroud)
...
connect().subscribe(rides => console.log(rides));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4809 次 |
| 最近记录: |