TLDR: Наблюдаемый объект не запускает рендеринг компонентов, пока пользователь не сделает действие (например, нажмите кнопку).Угловое2 Необусловляемое не срабатывание реверсирования
Я обновляю наблюдаемый, поддерживаемый объектом BehaviorSubject, содержащимся внутри службы, которая вводится внутри моего компонента.
В моем компоненте я использую простой *ngIf="myObservable$ | async"
для отображения div.
мне удалось повторить 2 ситуации, один для работы и один, который не но я не могу понять, в чем разница:
//CASE 1
this._mySubject$.next(true); //THIS DOES TRIGGER RERENDERING
//CASE 2
this.http.get(url)
.map(res => res.json())
.subscribe(body => {
this._mySubject$.next(true); //THIS DOESN'T TRIGGER RERENDERING UNTIL AN ACTION IS MADE
});
Как срабатывает весь поток? И какую версию углового2 вы используете? - Вероятно, вы можете решить свою проблему, обернув '.next (true)' в 'ngZone.run (...)' - однако это не должно быть необходимо с помощью простого вызова rest, поэтому моя текущая догадка заключается в том, что ваш rest-call каким-то образом завернут внутри какого-либо другого асинхронного/внешнего триггера. – olsn
Я использую Angular 2.1.0. Мой компонент, который уже подписан на наблюдаемый, вызывает функцию сервиса, которая делает простой HTTP-вызов (не завернутый ничем). – Yanis26
Любая конкретная причина использования блока 'subscribe()' для вызова '.next()'? Блоки Subscribe не должны использоваться для создания побочных эффектов. Только конечный потребитель (ы) наблюдаемого должен подписаться. – AngularChef