2017-09-08 4 views
0

これで、あらかじめ用意された角度モジュールをいくつかのcdnに公開して、角度のあるルートを指定してロードします。モジュールがあるCDNにあるときに私のルートにチャイルドをロードするにはどうすればいいですか

まだ角度コードを踏んだことはありませんが、loadChildrenをランダムなURLにポイントしてモジュールをフェッチしてロードするだけでは不十分な理由が考えられます。私のコード例を見ると、私のindex.htmlファイルと同じディレクトリに、あらかじめ作成されたgoo.umd.jsモジュールがあるときだけ動作します。

私はまだrawgit.com CDNからこのモジュールを取得するCustomLoaderのサンプルを見つけていません。私の研究に焦点を当てることができるところであれば、どんな方向にも感謝します。

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のURLがわからなくても、実際にはそれを知ることができない場合はどうなりますか?バックエンドが私に次の配列を送ったとします。{{path: 'blah'、url: '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に注入され、実行時にそのルートをホストに広告します。 –

関連する問題