0

Оба ui-router optional param without trailing slash и How to define optional parameter using UI-Router without trailing slash as well? имеют недостаточные аргументы и недействительны (по крайней мере, для моего сценария, то есть рабочих ссылок (href) для угловых маршрутов без конечных косых черт).Угловой адрес без косой черты с необязательными параметрами

Live Demo Link

Вот пример HTML ссылки

<div> 
    <a ui-sref="home">Home</a> 
    | <a href="#/posting/">Post 1</a> 
    | <a href="#/posting">Post 2</a> 
    | <a href="#/posting/sami">Post 3</a> 
    | <a ui-sref="post">Post 4</a> 
    | <a ui-sref="post({nam:'sami'})">Post 5</a>   
</div> 

Все приведенные выше ссылки работают нормально, за исключением Post 2, потому что у меня есть дополнительный параметр, и поэтому ссылка должна по крайней мере, слэш в конце

Я использую stateprovider и state выглядит

name: 'post', 
val: { 
    url : '/posting/:nam', 
    views: { 
     v1: { 
     template: '<h4>Posting <label ng-if="stateParams.nam">{{stateParams.nam}}</label> </h4>', 
     controller: 'post', 
      resolve: { 
       deps: function ($ocLazyLoad) { 
        return $ocLazyLoad.load([{ name: appName, files: ['post.js'] }]); 
       } 
      } 
     }, 
     params: { 
      nam: { squash: true, value: null } 
     } 
    } 
} 

Как я могу иметь действительную связь без пробелов, если у меня есть только возможность использовать ссылки href и не ui-sref

ответ

0

Вы можете использовать $urlMatcherFactoryProvider.strictMode(false); в конфигурации

0

В случае, если вы, как я пытался @ egor.xyz, и это не сработало. проверьте ui-router Frequent Questions, и вы увидите следующее:

Для старой версии UI-маршрутизатора, добавьте этот фрагмент кода в функции конфигурации вашего модуля. Он создает правило на $ urlRouterProvider, которое отображает все URL-адреса, которые не имеют завершающей косой черты на один и тот же URL-адрес, но с добавлением завершающего косая черта.

$urlRouterProvider.rule(function ($injector, $location) { 
    var path = $location.url(); 

    // check to see if the path already has a slash where it should be 
    if (path[path.length - 1] === '/' || path.indexOf('/?') > -1) { 
     return; 
    } 

    if (path.indexOf('?') > -1) { 
     return path.replace('?', '/?'); 
    } 

    return path + '/'; 
}); 

работал для меня.

 Смежные вопросы

  • Нет связанных вопросов^_^