Угловой UI-маршрутизатор с параметром URL-запроса, содержащим «точку»

В нашем приложении Angular мы имеем дело с идентификаторами, которые содержат «точку». Например:

book = {
  id: '123.456'
}

У нас проблемы с использованием таких идентификаторов как параметры URL. Все работает хорошо, если навигация происходит через «Angular», а именно, нажав на ссылку, которая вызывает$state.go('bookDetails', {bookId: book.id});, Но вещи не работают при перезагрузке страницы

"Невозможно получить /bookDetails?bookId=123.456"

в контроллере:

$scope.viewBookDetails = function() {
    $state.go('bookDetails', {bookId: book.id});
}

в представлении

<a href="" ng-click="viewBookDetails(); $event.stopPropagation();">

в роутере:

.state('bookDetails', {
    url: '/bookDetails?bookId'
}

в браузере:

https://example.com/bookDetails?bookId=123.456

Ссылка работает, если "точка" заменена на%2E в браузере.

Мы попытались заменить «точку» на «% 2E» в параметре для $ state.go ()

$scope.viewBookDetails = function() {
    $state.go('bookDetails', {bookId: book.id.split('.').join('%2E')});
}

но не работает, потому что «%» автоматически кодируется, а «точка» в браузере заменяется на «% 252E»

https://example.com/bookDetails?bookId=123%252E456

Ответы на вопрос(3)

Ваш ответ на вопрос