Ну тут обычный подход - router.navigate и туда передать массив с инфой по новому урлу, а-ля this.router.navigate(['catalogs', this.project, this.subproject, this.stage])
Что-то возьмется из snapshot в activatedRoute, что-то будет расчетное
А как из снапшота достать то, что идёт до /0/0/0? (В случае с catalog/0/0/0) как мне достать то что сначала идёт catalog?) Там просто другие модули могут быть