Ui-router необязательный параметр без конечной косой черты

Итак, это похоже на общую проблему, но я не нашел определенного ответа. В основном у меня есть состояние:

.state('users', {
     url: '/example/:id',
        templateUrl: 'angular-views/example.html',
        controller: 'ExampleCtrl'
    })

Я хочу, чтобы id был необязательным.

Уверен, что он соответствует

example/
example/1234

Но он не соответствует без косой черты.

example

Я пробовал $urlMatcherFactoryProvider.strictMode(false);, но это не работает для этого случая. Я мог бы использовать example?param=1234, но я предпочитаю более чистую версию.

Нужно ли мне определять второе состояние для работы?

Ответы

Ответ 1

Вы можете определить необязательные параметры URL, указав им значение по умолчанию в объекте params, например. squash скроет параметр в ссылках, если он не определен.

.state('users', {
         url: '/example/:id',
            templateUrl: 'angular-views/example.html',
            controller: 'ExampleCtrl',
            params:  {
              id: {
                     value: null,
                     squash: true
                  }
                }
        });

Я попробовал это локально и, похоже, работает нормально, независимо от конечной косой черты.