首页 > 解决方案 > Angular 解析器得到一个 Observable

问题描述

我从事 Angular 10 项目。我用一个简单的方法从我的后端获取数据

return this.http
      .get<{ returned: Animal[] }>('animals')
      .pipe(map((res) => res.returned.map((value) => value)));

这是我的解析器调用并通过我的路由模块中的路由器发送

resolve: {
        animals: AnimalResolver,
}

我得到解决数据this.route.snapshot.data.animals

我想要一个Obervable<Animal[]>供使用的 AsyncPipe。解析器返回的类型是 anObservable<Animal[]>但我得到一个错误无效的管道参数,要解决这个错误我需要做:

of(this.route.snapshot.data.animals);

为什么?

标签: angularobservableresolver

解决方案


在这种情况下,您需要使用this.route.data可观察的位置routeActivatedRouteActivatedRouteSnapshot只是当前路由的“静态”数据,这里没有可观察的数据。

this.animals$ = this.route.data
  .pipe(map(data => data.animals));

推荐阅读