Size: a a a

Angular - русскоговорящее сообщество

2021 April 13

j

jenia in Angular - русскоговорящее сообщество
Возникла проблема. Подскажите как ее решить пожалуйста ? Вчера день потратил и не нашел решения .  Восьмая строка - это в шаблоне text-together.component.html  соответствует строке   [playing]="playing_state$ | async"

https://gist.github.com/evgeniy123/419d75032855efa6f65860f978eca9ce
источник

АМ

Антон Морозов... in Angular - русскоговорящее сообщество
это changeDetection, у тебя значение меняется рано, до завершение проверки changeDetection, как то так. В проде пропадет, но в целом это не правильно. Надо смотреть, что там у тебя в playing_state передается и как
источник

В

Владимир in Angular - русскоговорящее сообщество
пайп async  вне зависимости от того что ты подашь на вход первым значением ВСЕГДА вернет тебе null, особенность реализации самого пайпа.
источник

j

jenia in Angular - русскоговорящее сообщество
this.playing_state$ = this.store.select(rootReducer.selectPlayingState);
——
export const selectPlayingState = createSelector(
 selectSoundState,
 fromSoundSelector.getPlayingState
);

———

export const getPlayingState = (state: State) => state.playing;
источник

M

Maksim in Angular - русскоговорящее сообщество
про null тут нет ни слова. Похоже pending$ слишком быстро меняется, с false на true
источник

В

Владимир in Angular - русскоговорящее сообщество
а null приведется к false)))
источник

j

jenia in Angular - русскоговорящее сообщество
Сам запрос httpClient медленный очень на всякий случай  ...
источник

M

Maksim in Angular - русскоговорящее сообщество
тогда об этом была бы ошибка, что Previous  value: 'null'. Current value: 'true'
источник

M

Maksim in Angular - русскоговорящее сообщество
если есть возможность, думаю имеет смысл pending$ изначально true сделать
источник

В

Владимир in Angular - русскоговорящее сообщество
впрочем, проверяется элементарно - оборачивается в *ngIf="playing_state$", если ошибка пропадает, то "привет очередная прелесть от разработчиков асинка". Лечится или условником, что криво, или еще более криво через добавление null в тип
источник

j

jenia in Angular - русскоговорящее сообщество
О каком $pending вы говорите ?  Такого нет у меня  ...
источник

M

Maksim in Angular - русскоговорящее сообщество
у тебя похоже предвзятое отношение к асинку, и во всем винишь его. Но поведение асинка тут не причем. Значение берется из стора, а значит из behaviourSubject, а значит сначала выплевывается изначальное значение, а не null. А ошибка возникает, потому что изначальное значение выплевывается, и тут же меняется на другое значение, до того как change detection отработал
источник

ВС

Валера Солдатов... in Angular - русскоговорящее сообщество
Поменяй место, где ты её изменяешь
источник

АМ

Антон Морозов... in Angular - русскоговорящее сообщество
this.store.select там же еще стор, с ним тоже все время какая-то прелесть, если я неошибаюсь там все на behaviorSubject, вот он и плюет сразу второе значение, как апи отдает
источник

В

Владимир in Angular - русскоговорящее сообщество
значение прогоняется через асинк?
источник

M

Maksim in Angular - русскоговорящее сообщество
а, я подумал 8 строчка это [isPending]="pending$ | async" (в гите так). Тогда речь о playing_state$
источник

В

Владимир in Angular - русскоговорящее сообщество
вот и я так подумал)))
источник

АМ

Антон Морозов... in Angular - русскоговорящее сообщество
можно просто заменить стор на new Subject и чекнуть
источник

ВС

Валера Солдатов... in Angular - русскоговорящее сообщество
Не знаю вообще зачем сторы в ангуларе
источник

ВС

Валера Солдатов... in Angular - русскоговорящее сообщество
Накрутят абстракций по хайпу и мучаются
источник