我刚刚将项目更新为Angular-CLI,我正在使用:
"@angular/cli": "1.0.0",
"@angular/compiler-cli": "4.0.1",
我收到错误说:
考虑使用对a的引用替换函数或lambda 导出函数angular CLI
来自此.ts
文件:
userManagement / userManagement.routing.ts
import {RouterModule, Routes} from "@angular/router";
export const routes: Routes = [
{
path: '', redirectTo: 'unlockUserID', pathMatch: 'full'
},
{
path: 'unlockUserID',
loadChildren: ()=> System.import('./unlockUserID/unlockUserID.module')
.then((imports: any)=> imports.UnlockUserIdModule)
},
{
path: 'changePassword',
loadChildren: ()=> System.import('./changePassword/changePassword.module')
.then((imports: any)=> imports.ChangePasswordModule)
},
{
path: 'maintainOfficeHierarchy',
loadChildren: ()=> System.import('./maintainOfficeHierarchy/maintainOfficeHierarchy.module')
.then((imports: any)=> imports.MaintainOfficeHierarchyModule)
},
];
export const routing = RouterModule.forChild(routes);
比我的模块:
@NgModule({
imports: [
SmartadminModule,
routing,
],
providers: [],
})
export class UserManagementModule {
}
-------------------------------- Update 1 ------------- ----------------
不得不改为:
export const routes: Routes = [
{
path: '', redirectTo: 'unlockUserID', pathMatch: 'full'
},
{
path: 'unlockUserID',
loadChildren: './unlockUserID/unlockUserID.module',
data: {pageTitle: 'unlockUserID'}
},
{
path: 'changePassword',
loadChildren: './changePassword/changePassword.module',
data: {pageTitle: 'changePassword'}
},
export const routing: ModuleWithProviders = RouterModule.forRoot(routes, {useHash: true});
现在我收到以下错误:
Error: RouterModule.forRoot() called twice. Lazy loaded modules should use RouterModule.forChild() instead.
---------------------------更新2 ------------------ ---------
我把它改成了
export const routing: ModuleWithProviders = RouterModule.forChild(routes)
;
现在我收到一条错误说:
Cannot find 'default' in './changePassword/changePassword.module'
如果我点击changePassword标签,其他链接也一样。
答案 0 :(得分:2)
根据https://github.com/rangle/angular-2-aot-sandbox#arrow-function-exports-top
箭头功能在传递给
NgModule
时无法与AoT一起使用。
因此,您不应在Routes
内定义箭头功能。
答案 1 :(得分:1)
对于通过路由器延迟加载的模块,不建议通过字符串导入。
ng更新将自动处理此问题。新语法利用了整个生态系统对导入的支持,而不是我们的自定义重写。
您的loadChildren路由配置应使用
之类的字符串进行更改loadChildren: './admin/admin.module#AdminModule'
到诸如
的导入语句loadChildren: () => import('./admin/admin.module').then(m => m.AdminModule)