2017-09-08 43 views
0

好了,我要發佈一些CDN我的預建角模塊,然後讓一些角度航線能夠指向它,並把它加載。我怎樣才能loadChildren在我的路線時,我的模塊上的一些CDN

我尚未出手角碼還,但有可能是一個很好的理由,我不能簡單地指向了loadChildren一些隨機的網址,並期望它來獲取和加載模塊。如果你看看我的代碼示例,那麼當我將我的預構建的goo.umd.js模塊放在與我的index.html文件相同的目錄中時,唯一的作品就是這樣。

我還沒有找到一個CustomLoader,將拉離我的rawgit.com CDN這個模塊的任何實例。任何方向我可以集中我的研究將不勝感激。

import { NgModule }    from '@angular/core'; 
import { RouterModule, Routes } from '@angular/router'; 

import { DashboardComponent } from './dashboard.component'; 
import { HeroesComponent }  from './heroes.component'; 
import { HeroDetailComponent } from './hero-detail.component'; 
declare var System: any; 
let gooUrl = "https://rawgit.com/ghstahl/angular4-goo-module/master/dist/bundles/goo.umd.js#GooModule"; 
let badGooUrl = "https://idontexist.com/ghstahl/angular4-goo-module/master/dist/bundles/goo.umd.js#GooModule"; 

const routes: Routes = [ 
    { path: '', redirectTo: '/dashboard', pathMatch: 'full' }, 
    { path: 'dashboard', component: DashboardComponent }, 
    { path: 'detail/:id', component: HeroDetailComponent }, 
    { path: 'heroes',  component: HeroesComponent }, 
    { path: 'goo',  loadChildren:() => System.import(gooUrl)}, // doesn't work, and this url exists. 
    { path: 'goo-bad',  loadChildren:() => System.import(badGooUrl)},// doesn't work, as I expected a 404. 
    { path: 'goo-url',  loadChildren: gooUrl}, // doesn't work, and this url exists. 
    { path: 'goo-local',  loadChildren: "goo.umd.js#GooModule"} // works 
]; 

@NgModule({ 
    imports: [ RouterModule.forRoot(routes) ], 
    exports: [ RouterModule ] 
}) 
export class AppRoutingModule {} 

回答

1

給在SystemJS配置文件鏈接到您的模塊:

'myModule': 'https://rawgit.com/ghstahl/angular4-goo-module/master/dist/bundles/goo.umd.js' 

然後,你可以加載它想:

loadChildren: "myModule#GooModule" 

見,說明這個plunk

+0

尼斯,下一個問題:如果我不知道網址什麼Mymodule中前場,並在現實中永遠不會知道它。試想一下,後端向我下面的[{路徑:「胡說」,網址:「HTTP://a.com/blah.bundle.js」}]數組 –

+0

如果所有的模塊都在同一個域,你可以這樣做: ''''myModule':'https:// rawgit.com/ghstahl/angular4-goo-module/master/dist/bundles'''' 'loadChildren:「myModule/goo .umd.js#GooModule「''' –

+0

謝謝Gosha,不幸的是他們不是。預計託管的角應用程序可以從任何地方獲取模塊。我的rawgit.com域是測試這個。我已經能夠通過一個React/Mobx項目來實現這一點,我的所謂捆綁模塊作爲腳本被注入到DOM-HEAD中,當它運行時,它將其路由通告給主機。 –