如何在 Angular 6 中使用新的 RXJS 6 pipe/map return 解析数据?

How do I return the Resolved Data with the new RXJS 6 pipe/map in Angular 6?

如何在 Angular 6 中使用新的 RXJS 6 pipe/map return 解析数据?

@Injectable()
export class RecentDataResolver implements Resolve<RecentData> {
    constructor(
        public data: DataService,
        private api: ApiService) {}

    resolve(
        route: ActivatedRouteSnapshot,
        state: RouterStateSnapshot
      ): Observable<any> {

        this.api.get('/data/recent').pipe(map(response => {
            return response as RecentData;
        }));
      }
}

我在组件里订阅时解析到的数据是null:

constructor(private route: ActivatedRoute, public data: DataService) {

    this.route.data.subscribe(routeData => {
      this.recent = routeData.recent;
      console.log('data', routeData.recent);
    });

}

您必须 return 从解析器函数中观察到一个。

您遗漏了 return 语句。

return this.api.get('/data/recent').pipe(map(response => {
     return response as RecentData;
}));

如果您没有在 get() 中执行任何逻辑,您可以简单地 return 将其作为

resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> {    
        return this.api.get<RecentData>('/data/recent');
}