我一直在尝试使用主模块和3个产品模块创建一个基于cli的示例angular4应用程序(产品本身是一个路径参数,可以懒洋洋地加载每个产品屏幕).
这是我的样本 – https://github.com/shankarvn/angular4lazyloading
重现步骤
> git clone https://github.com/shankarvn/angular4lazyloading.git
> cd应用程序
> npm安装
> ng serve -p 4003
在浏览器中localhost:4003 =>应该加载3张显示product1,product2和product3的卡片.此时,单击product1,您将看到路径更改和product1加载的ui.现在单击Dashboard,您将在控制台中看到错误
ERROR Error: Uncaught (in promise): Error: Cannot match any routes. URL Segment: 'product1/dashboard' Error: Cannot match any routes. URL Segment: 'product1/dashboard' at ApplyRedirects.noMatchError (router.es5.js:1404) [angular] at CatchSubscriber.selector (router.es5.js:1379) [angular] at CatchSubscriber.error (catch.js:104) [angular]
不确定我做错了什么 – 只是在延迟加载product1模块时加载仪表板路径.加载product1模块时,不应该注册路由.任何帮助表示赞赏.
谢谢.
解决方法
你不应该使用pathMatch:’full’
export const Product1Routes: Routes = [ { path: '',component: Product1Component,children:[ { path: 'dashboard',loadChildren: 'app/product1/dashboard/dashboard.module#DashboardModule' // or './dashboard/... },{ path: '',component: Product1ViewComponent } ] } ];
我也改变了loadChildren路径. (添加了app / product1)
为什么要为每个延迟加载的模块导入HttpModule?
这在延迟加载的模块中也是多余的
providers: [{ provide: LocationStrategy,useClass: HashLocationStrategy }],
附:我会为每个模块创建Routing modules
app-routing.module.ts product1-routing.module.ts dashboard-routing.module.ts
等等
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。