Просто взгляните на конфигурацию вашего маршрута:
{ path: 'book/:id', component: BookDetailComponent }
Маршрут, который вы должны использовать, это book/
, а не books/
routerLink="/books/{{book.id}}"
должно быть
routerLink="/book/{{book.id}}"
И да, как уже упоминал Андрей, маршрут общего назначения (маршрут с path: '**'
) должен быть последним маршрутом в вашей конфигурации маршрута.