2016-02-22 24 views
1

我正在使用Angular2,并且有一个模板使用ngFor来显示div DIV1,如果标志为true else else显示另一个div DIV2。 该标志在组件的ngOnInit()方法中通过AJAX从服务器中检索。AJAX导致效果不一致

问题是,如果标志被初始化为true,则将bue作为false进行检索,然后当页面最初呈现时,DIV1会呈现并非常快速消失,并显示DIV2。这很烦人,用户可以注意到临时不一致的视图呈现(尤其是在AJAX调用较慢的情况下)。

这是一个简单的例子,因此我不提供一个例子,因为在这里我不想测试上述功能是否工作。

问题是我应该如何处理这个和类似的情况,以便只显示正确的div?

+0

不是真正的angular2问题(:您可以隐藏默认情况下,或使用看起来类似于其他div的DIV0,直到ajax已解决... – Sasxa

+0

对Angular2方法感兴趣,例如,如果有一个拦截器显示一个微调器,添加javascript标记 –

回答

2

您可以添加另一个标志,表示如果该值已检索和包装你的内容在*ngIf或使用hidden

<div *ngIf="realValueRetrieved"> 
<!-- <div [hidden]="realValueRetrieved"> --> 
    <div *ngIf="flag"> 
    </div> 
</div> 

,并设置realValueRetrievedtrue如果是false,否则不改变。

其实有无限的方式来处理这个问题,这取决于你真正想要什么。显示一个微调器,不显示任何内容,当值到达并显示内容时使用动画,...

+0

因此,要么隐藏内容(直接或间接),直到我得到真正的价值或逐步呈现视图组件,直到现在我已经遵循了第二种方法,但我认为第一种方法更好。 –