2016-08-12 84 views
1

我想在我的应用程序中实现RC5更改,并且在延迟加载模块时遇到了一些麻烦。Angular2 RC5延迟加载路由无法找到模块

这是受影响的文件在我的应用程序的结构:

/app 
    /components/meda/meda.module.ts 
    /components/meda/meda.routing.ts 
    app.routing.ts 

这是我app.routing.ts

const routes: Routes = [ 
    { 
    path: '', 
    redirectTo: 'init', 
    pathMatch: 'full' 
    }, 
    { 
    path: 'init', 
    loadChildren: './components/init/init.module#InitModule' 
    }, 
    { 
    path: 'meda', 
    loadChildren: './components/meda/meda.module#MedaModule' 
    } 
]; 

和我meda.module.ts

@NgModule({ 
    imports: [ routing ], 
}) 
export class MedaModule { } 

我的应用程序加载到init路由的罚款,因为bootstrap加载InitModule,但一旦我尝试导航到meda我得到以下

GET http://localhost/web/components/meda/meda.module 404 (Not Found) 

看来它无法找到模块的位置。我也试过

loadChildren: 'app/components/meda/meda.module#MedaModule' 

但没有运气;任何想法我做错了什么?

感谢

+0

如果您使用工作流程为您的发行版在不同的目录中创建js文件(例如使用gulp)。您必须引用该路径,而不是在打字稿中导入时使用的路径。 所以它实际上是服务器上的.js文件的路径,而不是你应用程序结构中的ts文件,因此是404。 –

+0

但服务器中的文件实际上是在一个bundle.app.js中,这将如何工作呢? – David

+0

延迟加载是关于加载您并不总是需要的实现文件,因此最初不想加载。如果你有bundle.app.js中的代码,并且在你的应用程序启动时加载这个文件,那么你预计什么时候会加载懒惰,因为东西已经通过网络传输(只有html文件被延迟加载?)。 –

回答

0

我有同样的问题,我根据托尔斯滕维耶尔的意见改变了我的路。这是我的文件夹结构来说明;

/wwwroot 
    /app 
    /scripts 

我的.ts文件位于'wwwroot/app'文件夹下。我使用'gulp-typescript'将.ts文件转换为'wwwroot/scripts'文件夹下的.js文件。例如,如果你的init.module.ts路径是:wwwroot/app/components/init/init.module和你的.js文件transpiled到:wwwroot/scripts/components/init/init.module,你应指定如下:

loadChildren: 'wwwroot/scripts/components/init/init.module#InitModule' 

它应该工作,我希望它能帮助。

0

编写没有领先的路径。或./或/

loadChildren: 'components/init/init.module#InitModule' 

地址的起始点是您的html文件的位置。

相关问题