Пожалуйста, добавьте pathMatch: 'full' к следующему маршруту:
{ path: '', component: TestListComponent }
и переместите следующий маршрут в конец:
{ path: '**', redirectTo: '/' }
Таким образом, конечный результат будет:
{ path: '', component: TestListComponent, pathMatch: 'full' },
{ path: 'teststart/:id', component: TestStartComponent },
{ path: 'registration', component: RegistrationComponent},
{ path: '**', redirectTo: '/' }
В соответствии с официальной документацией Angular:
Стратегия сопоставления путей «полная» соответствует целому URL. Это важно делать при перенаправлении маршрутов с пустым путем. В противном случае, поскольку пустой путь является префиксом любого URL-адреса, маршрутизатор будет применять перенаправление даже при переходе к пункту назначения перенаправления, создавая бесконечный l oop.
Для подстановочного знака официальный в документах говорится:
Строка URL-адреса, использующая нотацию соответствия маршрутизатора. Может быть подстановочным знаком (**), который соответствует любому URL (см. Примечания по использованию ниже). По умолчанию используется «/» (путь root).
Наконец, примите во внимание, что порядок, в котором вы указываете свои маршруты, важен. Думайте так, как будто движок Angular движется один за другим, сканируя каждый сверху вниз, чтобы увидеть, какой из них соответствует запрошенному URL.