Version of @Parziphal answer for non-change detected components:
import { Location } from '@angular/common';
import { Router } from '@angular/router';
constructor(private readonly router: Router, private readonly location: Location) {
location.onUrlChange(() => this.canGoBack = !!this.router.getCurrentNavigation()?.previousNavigation);
}
goBack(): void {
if (this.canGoBack) {
this.location.back();
}
}