Neste código podemos reduzir a quantidade de pipes e eliminar a utilização do while e switchMap, tornando o código mais limpo e fácil de entender.
No filter capturamos o evento navigationEnd para que o código seja executado somente no final da navegação da rota.
No map, que é um operador de transformação, nós transformamos o dado em que estávamos trabalhando de "router" para o "activatedRoute".
E no subscribe setamos o title utilizando o service title passando como parametro o title que está dentro do activatedRoute.
ngOnInit(): void{
this.router.events
.pipe(
filter((event: any) => event instanceof NavigationEnd),
map(() => this.activatedRoute.firstChild?.data)
).subscribe((event: any) => this.titleService.setTitle(event._value.title))
}