gpt4 book ai didi

Angular 路由解析器或 onInit?

转载 作者:太空狗 更新时间:2023-10-29 17:09:30 26 4
gpt4 key购买 nike

使用 resolver 服务或在 OnInit Hook 中获取数据有什么更好的选择?例如,如果我需要从 3 个不同的来源获取数据到 1 个页面,更好的用户解析器或将代码写入 ngOnInit?

代码

ngOnInit() {
service1.getData().subscribe(c => {
this.data1 = c;
});
service2.getData().subscribe(c => {
this.data2 = c;
});
service3.getData().subscribe(c => {
this.data3 = c;
});
}

RouterModule.forRoot([{
path: 'page/:id',
component: blabla,
resolve: {
data1: service1,
data2: service2,
data3: service3
}
}])

ngOnInit() {
this.data1 = this.activatedRoute.snapshot.data.data1;
this.data2 = this.activatedRoute.snapshot.data.data2;
this.data3 = this.activatedRoute.snapshot.data.data3;
}

最佳答案

resolversonInit 之间的主要区别在于同步性。

  • Resolver 是同步的。

    • 当您需要加载组件之前的数据时,您应该使用它。
    • 您阻止组件加载。
    • 您没有将服务注入(inject)组件(您不能在那里使用其他方法)
  • OnInit 是异步的(在您的代码中)。

    • 在加载组件之前不需要数据可用时,您应该使用它。
    • 您不阻止组件加载。
    • 您将服务注入(inject)到组件中,因此您可以使用该服务的其他方法。

看看这个网站:https://blog.thoughtram.io/angular/2016/10/10/resolving-route-data-in-angular-2.html

关于 Angular 路由解析器或 onInit?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49639447/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com