Вот plunker играть:вручную изменять параметры маршрута приводит к несовместимым пользовательского интерфейса
https://plnkr.co/edit/qTjftING3Hk2fwN36bQa?p=preview
Все работает хорошо, за исключением того, когда вы вручную изменение параметра идентификатор в строке URL-адрес , потому что тогда выпадающий проект не показывает новый projectId как текущий проект. Это происходит, когда пользователь сохраняет URL-адрес в качестве любимой ссылки и копирует/вставляет его в строку url! Обычный случай, который я бы сказал!
Чтобы исправить это, я могу прослушивать изменения route.params в TestsListComponent
и добавить чек с помощью sharedService/EventEmitter
, чтобы измененный идентификатор существовал в этом выпадающем списке. Возвращаемое значение bool существуетProjectId внутри TestsListComponent решает, что я должен перенаправить на страницу /projects
, потому что идентификатор не существует.
Но, честно говоря, перенаправление с TestsListComponent
слишком поздно, по крайней мере, с точки зрения пользователя, потому что route projects/:id/tests
уже активирован.
Как вы исправите это неправильное поведение?
P.S.
Может быть, это своего рода глобальное изменение Params я могу слушать и проверять путь и его идентификатор внутри ProjectsListComponent, что помогло бы!
Если кто-то знает, как отредактировать строку url plunkr в режиме окна, чтобы проверить эту несогласованность, пожалуйста, дайте мне знать, как вы сделали этот readlly url bar редактируемым ... даже копирование URL-адреса в новую вкладку не работает , так как я получаю plunkr не нашли ошибку ... => ОТВЕТ
- нагрузки на plunkr и активировать режим окна
- В режиме окна копирования/вставки URL в новую вкладку
- Когда то есть вставленный URL: https://run.plnkr.co/LhwcQjzWHsRUda8H/projects/1/schoolclasses
- Сделать это, что URL: https://run.plnkr.co/LhwcQjzWHsRUda8H/#/projects/1/schoolclasses
- и изменение пары: https://run.plnkr.co/LhwcQjzWHsRUda8H/#/projects/2/schoolclasses
- Если вы не добавить хэш, то вы получите не найден 404.
Я не полностью прочитал ваш вопрос. Я только что видел: «У меня просто ощущение, что маршрутизатор должен предлагать действительно бескомпромиссный маршрут с помощью всего лишь пути:« Проекты /: id », такие как angularJS ui router!» Что делать? То, что вы можете сделать, это маршрутизатор с только «path» ** и ** 'children' (но без компонента). –
Давайте просто предположим, что у меня есть компонент без полей/проекты /: id с дочерним свойством. Как только пользователь изменит текущий проект проекта, вы получите активизацию, чего я не хочу. Я хочу, чтобы промежуточный шаг, который пользователь нажимает на кнопку «Открыть», тогда должен быть активирован маршрут/проекты по умолчанию для дочерних объектов /: id/overview. У вас есть решение для этого случая? – Pascal
Только 'redirectTo'. Я не понимаю, почему ты этого не хочешь. –