Angular2

时间:2016-09-27 10:19:21

标签: asynchronous angular routes resolver

我对Resolver的{​​{1}}感到困惑。解析器为我解决的问题是在渲染时组件中存在对象。如果我在没有Resolvers的情况下执行它并通过Promise开始在组件的构造函数中获取对象,则访问模板中的嵌套属性,如

routes
如果Promise没有及早解决,

可能会导致错误,这很可能是在需要完成http请求时。但是,从Resolver接收已解析对象的小信息告诉我在组件的构造函数中这样做

{{myObj.foo.bar}}

这和以前不一样吗?好吧,我承认,后端请求已经完成,我会立即收到订阅。不过,我再次异步访问已解析的数据。在模板渲染中可以访问{{myObj.foo.bar}}的可能性非常高,但是没有保证,不是吗?

我不知道我是否认为过于批评。直觉上使用this.route.data.subscribe(val => {...}); 并将已解析的对象设置为服务,然后可以由任何组件同步访问,这是一种直觉,但更接近我的意图。

期待澄清

1 个答案:

答案 0 :(得分:2)

将您需要访问myObj *ngIf的整个模板或部分包裹在其中:

<ng-container *ngIf="myObj?.foo">
  {{myObj.foo.bar}}
</ng-container>