2017-01-02 4 views
0

Прежде чем я повышен до angular-cli.beta-24 у меня была эта структура маршрутов:Угловые 2 АОТ и отложенной загрузки подмодули

+route1 
- +subroute1 
- +subroute2 
- +subroute3 

Но это не удается, имея в subroutes определенные в router.module из +route1, потому что они не могут быть найдены в настоящее время что AOT включен по умолчанию.

Я могу заставить его работать, не имея подпрограмм, определенных там, и вместо этого переместить их на тот же router.module, как и на все остальные маршруты в приложении. Вместо этого выглядит так:

+route1 
+subroute1 
+subroute2 
+subroute3 

С маршрутами, явно не являющимися подпрограммами.

Хотя это работает, это не жизнеспособное решение для меня, так как мои панировочные сухари полагаются на дерево маршрутизаторов, и это просто создает беспорядок в целом, если вы больше не можете иметь роутер-дерево.

Вот пример (route1 «s router.module файл):

const routes: Routes = [ 
    { 
    path: '', 
    component: Route1Component 
    }, 
    { 
    path: 'subroute1', 
    loadChildren: '+subroute1/subroute1.module#Subroute1Module' 
    }, 
    { 
    path: 'subroute2', 
    loadChildren: '+subroute2/subroute2.module#Subroute2Module' 
    }, 
    { 
    path: 'subroute3', 
    loadChildren: '+subroute3/subroute3.module#Subroute3Module' 
    } 
]; 

Почему вы не можете определить маршруты, как это при использовании AOT? Что мне не хватает?

ответ

2

AOT и ленивые погрузчики хорошо работают вместе с BETA.21 (я сделал post об этом).

Вместо того, чтобы перейти к loadChildren относительный путь от . вы должны начать с app папки, как что:

const routes: Routes = [ 
    { 
    path: '', 
    component: Route1Component 
    }, 
    { 
    path: 'subroute1', 
    loadChildren: 'app/+route1/+subroute1/subroute1.module#Subroute1Module' 
    }, 
    { 
    path: 'subroute2', 
    loadChildren: 'app/+route1/+subroute2/subroute2.module#Subroute2Module' 
    }, 
    { 
    path: 'subroute3', 
    loadChildren: 'app/+route1/+subroute3/subroute3.module#Subroute3Module' 
    } 
]; 

EDIT 1: Это может исходить от вашего ствола.

Были некоторые проблемы с бета-версией.23, и они действительно перешли к бета-версии.24. НО изменение было введено в бета-версии.23, и если вы прочитаете только журнал изменений для бета-версии.24, возможно, вы его пропустили. Пожалуйста, взгляните на Beta 23 changelog, нарушающие изменения:

чертежи: модуль и компонент корневого приложения теперь должны быть импортированы напрямую. (Например, использование импорта {AppModule} от './app/app.module ' вместо импорта {AppModule} от' ./app/';)

Если я хорошо понял, бочки не работают с AOT (который теперь включен по умолчанию). В принципе, вы можете удалить index.ts и должны импортировать то, что вам нужно напрямую.

+0

Уже пробовал это без везения. Дело в том, что некоторые из детских маршрутов работают, но никогда, когда ленивая загрузка имеет 3 уровня глубины. Поскольку, начиная с моего «AppModule», у меня есть еще один уровень с «AdminAreaModule», который имеет «DashboardModule», но помимо этого он не работает. Несмотря на то, что он делает точные определения. – Chrillewoodz

+0

Могут ли быть мои проблемы с бочками, которые вызывают проблемы? – Chrillewoodz

+0

Я не понимаю «импорт бочек». Что ты имеешь в виду ? – Maxime