Вы, вероятно, хотите takeWhile
:
this.router.events
.pipe(
takeWhile(url => url === ...), // when the condition isn't met it'll complete immediatelly
)
.subscribe(...);
но если вы хотите включить также последнее значение (значение, которое завершило наблюдаемое), вам нужно будет сделать что-то вроде этого:
this.router.events
.pipe(
concatMap(url => url === ... ? of(url, null) : of(url)),
takeWhile(Boolean),
)
.subscribe(...);