У меня сделано так:
– Написан абстрактный класс, принимающий в конструкторе StateResolver[], вызывающий у них собственный метод resolve() по очереди сразу, как только отрабатывает предыдущий.
– Как только отрабатывает последний, весь резолвер возвращает Observable<void> в методе resolve().
– В каждый StateResolver передается ссылка на store (у меня ngxs), диспатчер, селектор и предикат на проверку на то, что данные заполнились.