Naz*_*iuk 11 typescript angular
resolver在OnInit钩子中使用服务或获取数据有什么好处?例如,如果我需要从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;
});
}
Run Code Online (Sandbox Code Playgroud)
要么
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;
}
Run Code Online (Sandbox Code Playgroud)
Gus*_*pes 10
resolvers和之间的主要区别onInit是同步性.
Resolver 是同步的.
OnInit 是异步的(在你的代码中).
看看这个网站:https://blog.thoughtram.io/angular/2016/10/10/resolving-route-data-in-angular-2.html
这要看情况。如果组件在没有data1, data2, 和 的情况下无法运行data3,则解析方法很有意义。一个例子是你的银行账户页面。在您可以看到您帐户的详细信息之前,您并不真正关心该页面。
如果您可以在用户等待数据时向他显示某些内容,最好将数据保存在ngOnInit. 一个例子是产品页面,其中data{1,2,3}是推荐产品流。即使没有推荐,产品页面仍然可以显示,并且推荐的产品可以继续加载,而用户可以与页面的其余部分进行交互。
如果不深入了解您的业务逻辑需求,任何人都很难回答这个问题。
| 归档时间: |
|
| 查看次数: |
2649 次 |
| 最近记录: |