Size: a a a

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

2021 June 17

OP

Oleg P in Angular - русскоговорящее сообщество
мне нужна шина сообщений. Чтобы при отправке данных указать в какой канал отправлять и payload.
Затем в нужном месте подписываюсь на нужный канал и получаю сообщения. Когда-то нужно отписаться именно от конкретного канала - чтобы больше не получать сообщения
источник

OP

Oleg P in Angular - русскоговорящее сообщество
Вот мой сервис - шина:
источник

OP

Oleg P in Angular - русскоговорящее сообщество
Отправка сообщения в канал с именем EDIT_LAYER_MAP:
источник

OP

Oleg P in Angular - русскоговорящее сообщество
Подписка на канал и получение данных:
источник

RY

Roman Yazvinsky in Angular - русскоговорящее сообщество
1) В сервисе возвращайте return this.emitter.pipe(...), без .subscribe. Тогда не понадобится handler прокидывать и будет возможность нормально организовать отписку
источник

OP

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

RY

Roman Yazvinsky in Angular - русскоговорящее сообщество
2) Еще раз, зачем вызывается subscribe во второй раз?
источник

RY

Roman Yazvinsky in Angular - русскоговорящее сообщество
filter и map оставьте в сервисе
источник

OP

Oleg P in Angular - русскоговорящее сообщество
компонент пересоздается и в конструкторе опять подписывается на канал. А в этом канале - последнее сообщение
источник

OP

Oleg P in Angular - русскоговорящее сообщество
так?
источник

RY

Roman Yazvinsky in Angular - русскоговорящее сообщество
Можно немного переделать логику и в take() прокидывать число оставшихся непрочитанных сообщений. Соответственно, надо где-то хранить информацию, какие сообщения прочитаны, а какие нет
источник

OP

Oleg P in Angular - русскоговорящее сообщество
источник

RY

Roman Yazvinsky in Angular - русскоговорящее сообщество
Да, только возвращаемый тип все же укажите у метода
источник

RY

Roman Yazvinsky in Angular - русскоговорящее сообщество
Если в инкогнито работает, а в обычном режиме нет - почистите кэш
источник

А

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

А

Александр (Alex)... in Angular - русскоговорящее сообщество
заходит на все модули кроме одного
источник

OP

Oleg P in Angular - русскоговорящее сообщество
все равно будет приходить. Даже если поставить take на стороне подписчика. Из-за того что компонент заново создается. Опять прилетает сообщение.
источник

OP

Oleg P in Angular - русскоговорящее сообщество
Все-таки нужно пробросить левое значение - чтобы не приходило больше сообщение
источник

RY

Roman Yazvinsky in Angular - русскоговорящее сообщество
Не, вынос subscribe вне сервиса не решает проблему. Вам скорее всего надо делать filter(message => message.isUnread) или что-то подобное
источник

OP

Oleg P in Angular - русскоговорящее сообщество
спасибо. нужно что-то попроще
источник