Как ждать переменную для установки в угловых - PullRequest
0 голосов
/ 10 февраля 2019

Класс AppInitializer

dataloadcomplete = false;

initializeApp() {
let promise = new Promise((resolve, reject) => {
Promise.all(promise).then(
  (res) => { dataloadcomplete = true; resolve() },
  (err) => { reject(); },
);
return promise;
}

CanactivateRoute

canActivate(route: ActivatedRouteSnapshot): Promise<Boolean> {
 // if data load completed return true else false;

}

хотите повторно инициализировать приложение при изменении страны.

Ответы [ 2 ]

0 голосов
/ 10 февраля 2019

Если у вас несколько HTTP-вызовов, я думаю, вы можете использовать forkJoin , чтобы извлечь все вызовы в одну точку, затем использовать EventEmitter и перехватить событие из функции класса 2нет необходимости ждать установки переменной класса 1.

Вы также можете использовать интервал в Angular и ждать, пока не получите истинное значение переменной класса 2.

0 голосов
/ 10 февраля 2019

При небольшом количестве показанного кода трудно предложить наилучший вариант действий, так как есть несколько вариантов.

Во-первых, в любом случае, убедитесь, что класс, содержащий данные (класс 1в вашем примере) это инъекционный сервис.Добавьте его в любой компонент, которому требуется доступ к данным.

Если вам нужно загрузить некоторые данные и подождать, пока маршрут к конкретному компоненту не будет загружен, вы можете использовать средства разрешения маршрутов.

Если вам нужно дождаться загрузки любого приложения перед его запуском, вы можете использовать APP_INITIALIZER: Angular: как правильно реализовать APP_INITIALIZER

Если выЕсли вы хотите лучше управлять состоянием своего приложения, рассмотрите возможность использования библиотеки Redux для Angular под названием NgRx.Вы можете использовать его для управления потоком данных в вашем приложении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...