Я объясню свою проблему на упрощенном примере, так как мой код довольно длинный.
Я хочу отобразить определенный div, когда одно из isFetching
или isDownloading
истинно.
<div *ngIf="(isFetching || isDownloading)">
My div element is here
</div>
В начале моей программы оба они верны, поэтому должен отображаться div. Ниже div сверху у меня есть другие элементы, которые отображаются в представлении после изменения isFetching
на false
. (isFetching
заменяется на false
после завершения выборки из базы данных.) После того, как isFetching
заменяется на false
и элементы визуализируются, после загрузки последнего элемента из них (это изображение), я затем меняю isDownloading
на false
.
Когда оба isFetching
и isDownloading
ложны, это когда я хочу скрыть элемент 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;
}
isFetching
, так иisDownloading
? - person user184994   schedule 29.07.2018ngOnInit
- person user184994   schedule 29.07.2018isFetching
илиisDownloading
этоtrue
. Поскольку я не могу сделать это с оператором||
, что мне делать дальше? Должен ли я создать еще один элемент, который является дубликатом этого div и к нему прикреплен только*ngIf="isDownloading"
? Однако я не думаю, что это лучший обходной путь. - person EDJ   schedule 29.07.2018