【问题标题】:Resolve not returning data to component解决不向组件返回数据
【发布时间】:2021-03-08 03:29:29
【问题描述】:

我遇到了一个问题,即解析数据在组件中显示为未定义。

下面是我的解决代码

export class MyResolve implements Resolve<any> {

  constructor(private dataServ: DataService) { }

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

    return forkJoin([
      this.dataServ.getA(),
      this.dataServ.getB(),
      this.dataServ.getC()
    ]).pipe(map(response => {
      console.log(response)
      return response;
    })).toPromise().then(data => { console.log(data) });
      
      
    }
}

我可以在控制台中看到数据。 但是当我在组件中使用数据时,它显示未定义

下面是组件中的代码

var test = this._route.snapshot.data;
console.log(test);

在哪里 _route:ActivatedRoute

我也在路由模块中添加了解析。

请指导

【问题讨论】:

  • 有点不相关,但请注意,使用解析器会阻止您在单击链接后要访问的组件的呈现,直到获取数据为止。如果您最终获取多个端点,我认为可能需要一些时间来解决,因此会导致糟糕的用户体验。更多关于这里的主题:stackoverflow.com/questions/49054232/…

标签: angular promise rxjs resolve


【解决方案1】:

你返回一个 Promise,它使用 then。 then 预计会返回一个值以供进一步使用,而您没有。因此,在 then 之后 Promises 的值是未定义的。

您可以简单地删除 then 或再次返回该值。

    .then(data => { console.log(data); return data; }); // or remove this line
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-10
    • 2021-08-17
    • 1970-01-01
    • 1970-01-01
    • 2020-05-17
    • 1970-01-01
    • 2020-10-14
    • 1970-01-01
    相关资源
    最近更新 更多