скажем, у меня есть переменная
Вы можете использовать takeWhile
скажи, что у меня есть [...] наблюдаемые
Вы можете использовать takeUntil
Вот пример:
data$.pipe(
takeUntil(this.stopTimer$),
//...
)
Когда выходит stopTimer$
, любая подписка на эту наблюдаемую будет остановлена, потому что наблюдаемая завершается.
тогда я не смогу отписаться по своему условию:
Проблема здесь в том, что вы пытаетесь отписаться от наблюдаемого, что не имеет смысла. Вы можете только отменить подписку. Так что вы могли бы сделать
this.sub = data$.pipe(...).subscribe(...);
this.sub unsubscribe();
Но я лично предпочел бы метод takeUntil
, описанный выше, так как отписка будет запечатлена непосредственно в самом наблюдаемом после его завершения.