Маршрутизация Angular 2+ Маршрутизация на основе пользовательского ввода

В настоящее время в нашем проекте мы используем маршрутизатор Angular для определения наших маршрутов. У нас есть одностраничное приложение в стиле мастера, в котором есть кнопки «Далее» и «Предыдущий» на каждой странице, которые определяют, по какому маршруту перейти к следующему и предыдущему соответственно. Эти кнопки «Далее» и «Предыдущий» реализованы с условной логикой на каждой странице на основе пользовательского ввода с предыдущих страниц (например, если пользователь выбрал «Option1 и Selection1» на предыдущей странице, перейдите на страницу X, иначе перейдите на страницу Y). Это работает большую часть времени; однако, поскольку мы добавляем больше страниц, требующих больше условной логики, это потенциально может выйти из-под контроля.

Есть ли способ упростить этот процесс? Я изучил защиту Angular Router, и хотя они предоставляют способ перенаправить пользователя на определенную страницу, если приложение не имеет необходимых данных во время вызова маршрута, я не думаю, что они то, чем мы являемся. находясь в поиске.


person user8539602    schedule 20.02.2018    source источник
comment
Как насчет регулярных выражений? stackoverflow.com/questions/18131834/   -  person salah-1    schedule 20.02.2018
comment
Похоже, проблема не в пейджере, условном обозначении или маршрутизаторе, а в самом дизайне.   -  person salah-1    schedule 20.02.2018
comment
Извините, я добавил небольшое уточнение выше - я хочу перейти на определенную страницу на основе ответов с предыдущей страницы.   -  person user8539602    schedule 20.02.2018


Ответы (1)


Если пользователю не предназначен прямой доступ к странице 2+ вашего мастера, нет причин использовать Router imo. Я бы выбрал один основной компонент/маршрут, настраиваемую древовидную структуру данных, которая определяет поток пользователей в нем, например, модели, компоненты, динамические формы, редакторы, конечные точки API и т. д., используемые на каждом этапе. Если для простых ng-переключателей слишком много случаев, добавьте ComponentFactories: https://angular.io/guide/dynamic-component-loader

Т.е. Я стараюсь избегать таких компонентов, как Step1Component и т. д., и использую многократно используемые компоненты, которые позволяют создавать различные пользовательские интерфейсы, построенные в основном только из json. Хотя в меньшем корпусе step1, step2 и т.д. -компоненты тоже подойдут.

person funkizer    schedule 20.02.2018
comment
Это то, о чем вы говорите? stackoverflow .com/questions/37746516/ Изменить: или это? angular2-tree.readme.io/docs - person user8539602; 20.02.2018
comment
Не дерево dom, я имею в виду просто массив шагов json, их модели данных (которые могут включать метаданные о том, какие редакторы/элементы формы им нужны), возможные подшаги (отсюда дерево) и т. д.. - person funkizer; 21.02.2018