Angular routerLink conditionally
<a [routerLink]="myVar ? '/home' : null" routerLinkActive="is-active">Home</a>
or
<a [routerLink]="myVar ? ['/home'] : []">Home</a> <a [routerLink]="myVar ? '/home' : null" routerLinkActive="is-active">Home</a>
or
<a [routerLink]="myVar ? ['/home'] : []">Home</a> Официальное руководство рекомендует использовать декораторы @HostListener и @HostBinding.
Представлена реализация взаимной подписки без генерации событий.
В async pipe за вас отпишется Angular. Во всех остальных случаях лучше отписываться самостоятельно. Допускается не отписываться в потоках, где будет гарантировано вызван complete.
На память. Некоторое время назад я решил достаточно необычную задачу, но в последствии на backend`е переделали логику и код был удалён из проекта.
Подписка на router.events, на событие NavigationStart spinner показывается, на события NavigationEnd, NavigationCancel, NavigationError скрывается.
Решение, позволяющее размещать frontend на поддомене (dci.example.com) или на префиксе маршрута (example.com/dci).