我有两条导致视图改变的陈述:
statement1; // changes a databinding
statement2; // is an asynchronous call which does several changes
我希望将两个更改同时应用于视图。当前statement1完成,在statement2仍在处理时将其更改应用于视图。因此,从statement1看到的更改在可见的几毫秒之前就可见了,这看起来不太好。有没有办法在两个语句都完成之前停止视图更改?
答案 0 :(得分:1)
您可以考虑暂时从角度变化检测中分离视图。
constructor(private changeDetectorRef: ChangeDetectorRef) { }
this.changeDetectorRef.detach();
statement1; // changes a databinding
statement2; // is an asynchronous call which does several changes
this.changeDetectorRef.reattach();
答案 1 :(得分:0)
听起来,您需要使用解析器来获取语句2的信息。一旦获得了语句2的信息,那么您将想要转到该路由并显示语句1和2的信息
https://angular.io/guide/router#resolve-guard
如果您不想在转到新路由之前等待语句2,则需要使两个语句都异步,并等待显示语句1的结果,直到语句2完成为止。