Size: a a a

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

2021 April 01

AB

Az Booki in Angular - русскоговорящее сообщество
Vladimir Murashko
но к сожалению, надо без спиннера
создай сабжект с 3-я состояниями, рули эти три состояния как тебе необходимо и с помощью ngSwitchCase показывай все , что тебе нужно
источник

AB

Az Booki in Angular - русскоговорящее сообщество
состояния в энам можно сунуть
источник

AB

Az Booki in Angular - русскоговорящее сообщество
export const enum EShowStatus { FirstInit, Filled, Empty }
источник

AB

Az Booki in Angular - русскоговорящее сообщество
типа того
источник

KW

Kirill Warp in Angular - русскоговорящее сообщество
У кого есть бэнчмарк для ngIf ngSwitch?
источник

АП

Авраам Петрович... in Angular - русскоговорящее сообщество
господа, можно услышать опыт в следующем вопросе:

interval(10000).pipe(shareReplay(1), refCount()) // Observable<number>

let sub = new ReplaySubject();
interval(10000).subscribe(sub); // Subscription

работать будут плюс минус одинаково
а в чем получится принципиальная разница?
источник

M

Maksim in Angular - русскоговорящее сообщество
вроде как shareReplay изнутри использует ReplaySubject, поэтому принципиально разницы никакой, только в мелочах
источник

АП

Авраам Петрович... in Angular - русскоговорящее сообщество
в первом случае реплей сабжект создасться под капотом и будет автоотписка.
но эта автоотписка убьет поток в теории, значит ли это что он таки "не постоянный" и его придется постоянно пересоздавать, или это наоборот хорошо, что не будет постоянно занятой под поток памяти?
источник

АП

Авраам Петрович... in Angular - русскоговорящее сообщество
вот это и интересно. я могу в сервисе написать
export class Service {
 data$: BehaviorSubject<number>;

 constructor() {
   interval(10000).subscribe(this.data$)
 }  
}

и потом в приложении подсоединятся к этой точке.

а могу получается так:

export class Service {
 data$: Observable<number>;

 constructor() {
   this.data$ = interval(10000).pipe(shareReplay(1), refcount());
 }  
}


и тоже потом подключаться к этой точке
источник

АП

Авраам Петрович... in Angular - русскоговорящее сообщество
разница будет в принципе отписки и возможности восстановить соединение, но какая именно
источник

АП

Авраам Петрович... in Angular - русскоговорящее сообщество
выглядит так что второй вариант лучше, т.к. интервал не начнет работать пока мы не подпишемся на data$, и перестанет работать, и перестанет работать когда последний отпишется.

но вот refCount() в теории должен убить поток, значит ли это что он теперь будет мертвым грузом висеть и больше никогда не включится. или когда мы подпишемся второй раз он просто пойдет сначала?
источник

M

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

АП

Авраам Петрович... in Angular - русскоговорящее сообщество
а еще ему почему-то совсем не нравится попытка сделать shareReplay() от интервала
источник

АП

Авраам Петрович... in Angular - русскоговорящее сообщество
реплей вроде должен отыгрывать N значений когда к нему подключаться, а получается что он замыкает в себе последнее значение из потока в момент... завершения? и т.к. интервал не завершается - то возвращать нечего?
источник

AS

Anton Shvets in Angular - русскоговорящее сообщество
Авраам Петрович
реплей вроде должен отыгрывать N значений когда к нему подключаться, а получается что он замыкает в себе последнее значение из потока в момент... завершения? и т.к. интервал не завершается - то возвращать нечего?
последнее значение он возвратит
источник

АП

Авраам Петрович... in Angular - русскоговорящее сообщество
короче выяснилось что в share уже есть refCount
источник

АП

Авраам Петрович... in Angular - русскоговорящее сообщество
который отвечает за перезапуск подключения когда все отпишутся. если бы был таймер то share/shareReplay/refCount сделают его перезапускаемым когда последний отписался. если не указать - он продолжится
источник

АП

Авраам Петрович... in Angular - русскоговорящее сообщество
refCount делает перезапуск когда никого не осталось
share в свою очередь позволяет получать одно и то же значение двум подписчикам
а shareReplay ещё и при подписке выплюнет столько-то элементов с конца, когда второй ещё ничего не получал
источник

7

7384114837 in Angular - русскоговорящее сообщество
Как убрать тесты при создании компонента? У меня почему-то такое вот получается =D
Тесты остаются, стили пропадают
источник

🏡К

🏡 Назар Калитюк... in Angular - русскоговорящее сообщество
7384114837
Как убрать тесты при создании компонента? У меня почему-то такое вот получается =D
Тесты остаются, стили пропадают
вроде нужно —skip-tests
источник