我将用一个简化的例子来解释我的问题,因为我的代码相当冗长。
当
在我的程序开始时,它们都是true,所以应该显示div。在上面的div下面,我有其他元素,这些元素在
当
然而,我刚才解释的代码给我带来了这个错误:
我似乎不明白为什么会出现这个问题?我的逻辑有什么问题吗?如何在不出错的情况下实现所需结果? 编辑: 这段代码在我类的构造函数中:
当
isFetching
或者 isDownloading
两个参数之一为true时,我想要显示一个特定的div。<div *ngIf="(isFetching || isDownloading)">
My div element is here
</div>
在我的程序开始时,它们都是true,所以应该显示div。在上面的div下面,我有其他元素,这些元素在
isFetching
更改为false
后显示在视图中。(从数据库获取完成后,isFetching
被更改为false
。)在isFetching
更改为false
并渲染出元素之后,在这些元素的最后一个元素(是一张图片)下载后,我会将isDownloading
更改为false
。当
isFetching
和isDownloading
都为false时,我想隐藏div元素。然而,我刚才解释的代码给我带来了这个错误:
Expression has changed after it was checked. Previous value: 'ngIf: true'. Current value: 'ngIf: false'.
我似乎不明白为什么会出现这个问题?我的逻辑有什么问题吗?如何在不出错的情况下实现所需结果? 编辑: 这段代码在我类的构造函数中:
firebase.database().ref('/users/' + this.userId).once('value').then(function(snapshot) {
this.username = (snapshot.val() && snapshot.val().username) || 'Anonymous';
this.isFetching = false;
});
当 isFetching
被改为 false
后,我的 .html 中会呈现其他元素。然后,在这些元素的最后一个元素(即图像)加载完毕后,将调用此代码 (load)="latestElementLoaded()"
。
latestElementLoaded(){
this.isDownloading = false;
}
ngOnInit
中。 - user184994isFetching
或isDownloading
之一为true
时,我想显示我的div。由于我无法使用||
运算符来完成此操作,我该怎么办?我应该创建另一个元素,它是该div的副本,并仅将*ngIf="isDownloading"
附加到它吗?但是,我认为这不是最好的解决方法。 - EDJ