2016-09-26 27 views
5

İki üst düzey modül ve her birinin altında birkaç modül ile bir web uygulamasında çalışıyorum. Örnek:Angular2 yuvalanmış bir modül bulamıyor

  • kamu

    • kaydı
    • giriş
  • portalı

    • pano
    • sonuçları
    • atamalar

iç içe modüllerin her biri bir veya daha fazla potansiyel yolları, hizmet ve bileşenleri vardır. Kamu ve portal modülleri ayrıca farklı yerleşim gereksinimlerine sahiptir.

Yapmak istediğim kodları yukarıdaki her ana bölüm için modüllere ayırmaktır. Başka bir rotanın bir çocuk olarak bir modül yüklemeye çalıştığınızda ancak ben modül bildiren bir hata bulunamıyor olsun: Burada

error_handler.js:46 
EXCEPTION: Uncaught (in promise): Error: Cannot find module './dashboard/dashboard.module'. 

benim yönlendirme dosyalarıdır:

/app/app.routing.ts 

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

export const appRouting: ModuleWithProviders = RouterModule.forRoot([ 
    { 
    path: 'portal', 
    loadChildren: 'portal/portal.module#PortalModule' 
    }, 
    { 
    path: '', 
    loadChildren: 'public/public.module#PublicModule' 
    } 
]); 


/app/portal/portal.routing.ts 

import { ModuleWithProviders } from '@angular/core'; 
import { Routes, RouterModule } from '@angular/router'; 
import { PortalComponent } from './portal.component'; 

export const portalRouting: ModuleWithProviders = RouterModule.forChild([ 
    { 
    path: '', 
    component: PortalComponent, 
    children: [ 
     { 
     path: 'dashboard', 
     loadChildren: './dashboard/dashboard.module#DashboardModule' 
     } 
    ] 
    } 
]); 

"dashboard" modülü şu adreste yaşıyor: /app/portal/dashboard/dashboard.module.ts, ama modül yolunu loadChildren olarak ayarlamam önemli değil, bulamıyor gibi görünüyor.

Neyi yanlış yapıyorum? SystemJS yerine WebPack kullanıyorum.

+0

Lütfen 'sistemjs.config.js' dosyanızı ekleyebilir misiniz? – Supamiu

+0

@Supamiu Özür dilerim, WebPack – Brandon

+0

kullanıyorum bahsetmeyi unuttum Burada sorun gelmiyor, ama portalıRouting ana yolu boş bir yol olmalı, çünkü 'portal' zaten appRouting –

cevap

1

Şu ana kadar es6-promise yükleyiciyi kullanmak benim için çalışıyor gibi görünüyor. İşte

app/app.routing.ts 
import { ModuleWithProviders } from '@angular/core'; 
import { Routes, RouterModule } from '@angular/router'; 

export const appRouting: ModuleWithProviders = RouterModule.forRoot([ 
    { 
    path: 'portal', 
    loadChildren:() => require('es6-promise!./portal/portal.module')('PortalModule') 
    }, 
    { 
    path: '', 
    loadChildren:() => require('es6-promise!./public/public.module')('PublicModule') 
    } 
]); 

app/portal/portal.routing.ts 
import { ModuleWithProviders } from '@angular/core'; 
import { Routes, RouterModule } from '@angular/router'; 
import { PortalComponent } from './portal.component'; 

export const portalRouting: ModuleWithProviders = RouterModule.forChild([ 
    { 
    path: 'portal', 
    component: PortalComponent, 
    children: [ 
     { 
     path: 'dashboard', 
     loadChildren:() => require('es6-promise!./dashboard/dashboard.module')('DashboardModule') 
     }, 
     { 
     path: 'results', 
     loadChildren:() => require('es6-promise!./results/results.module')('ResultsModule') 
     } 
    ] 
    } 
]); 

app/portal/dashboard/dashboard.routing.ts 
import { ModuleWithProviders } from '@angular/core'; 
import { Routes, RouterModule } from '@angular/router'; 
import { DashboardComponent } from './dashboard.component'; 

export const dashboardRouting: ModuleWithProviders = RouterModule.forChild([ 
    { 
    path: '', 
    component: DashboardComponent 
    } 
]); 

... Bu noktaya benim yönlendiricileri var ve benim <router-outlet> etiketleri doğru çıkışını görüyorum.

0

Gösterge paneli modülü için doğru yol app/portal/dashboard/dashboard.module olacaktır.

Herhangi bir nedenle webpack'in bu durumda mutlak yola ihtiyacı vardır. Yolu değiştirdikten sonra sunucuyu yeniden başlatmayı unutmayın.

+0

Bu yaklaşımı denedim ve aynı sonucu aldım.Ancak, ben6-vaat yükleyici kullanırsam, beklendiği gibi çalışır. – Brandon

+0

Sunucuyu yeniden başlattınız mı? Benim durumumda sadece bundan sonra çalıştı. –

+0

Evet ve hala aynı sonucu aldım. – Brandon