Сегодня я сделал обновление с угловой 6 до 7
Наряду с этим мне пришлось обновить rxjs с 6.1.0 до 6.3.3 и набрать текст с 2.7.2 до 3.1.1
И теперь этот метод эффектов ngrx выдает ошибку машинописного текста:
@Effect()
init$ = defer(() => {
const userData = localStorage.getItem('user');
return (userData)
? of(new Login(JSON.parse(userData)))
: of(new Logout());
});
Аргумент типа '() => Observable |Наблюдаемый 'нельзя назначить параметру типа' () => void |По подписке |По подписке |PromiseLike |InteropObservable '.
Кажется, что я больше не могу использовать defer для отправки действия, подобного этому, поэтому я не уверен, как написать эффекты инициализации, двигаясь вперед.
Мне просто нужно дождаться инициализации хранилища, поэтому в этом методе я откладываю выполнение до тех пор, пока эффекты не подпишутся на поток действий.
Кто-нибудь знает, какЯ могу обойти это?
ОБНОВЛЕНИЕ:
Я также нашел Stackblitz пример, который использует ROOT_EFFECTS_INIT
, но из-за того, что я вфункциональный модуль, это не работает ( обсуждается здесь )
import { ROOT_EFFECTS_INIT } from '@ngrx/effects';
@Effect()
init$ = this.actions$
.ofType(ROOT_EFFECTS_INIT)
.pipe(
map(() => {
const userData = localStorage.getItem('user');
return (userData)
? of(new Login(JSON.parse(userData)))
: of(new Logout())
})
);