javascript - Angular 6: Aynı rota ile birden fazla loadChildren nasıl kullanılır?
Bende şöyle bir şey var:
const routes: Routes = [
{
path: ':path', component: SiteRoot, children: [
{ path: '', loadChildren: '../modules/maple/template.module#TemplateModule' }
]
}
];
Bu :path URL'sini birden fazla modülü dinamik olarak eşleştirmek için kullanmak istiyorum. Her modülün kendi dahili Rotaları var.
Bunu başarmanın bir yolu var mı?
ResolveComponentFactory ile ViewContainerRef'i denedim ama sadece modül bileşeni ile çalışmıyor. NgModuleFactoryLoader ile bile, Routes uygulanamıyor.
DÜZENLEME, her şeyi netleştirmek için:
Başarmaya çalıştığım şey, aynı rota yolunda farklı modüllerin görüntülenmesini sağlamaktır. Örneğin, kullanıcı 'home' yolunda kullanıcı panosunu görebilir ve yönetici de 'home' yolunda yönetici panosunu görebilir.
Bu özellik iş mantığı tarafından tanımlanmıştır, bu yüzden yönetici panelini başka bir URL'ye değiştiremem.
Cevap #1
Bence yönlendirme modülünüzü yanlış bir şekilde oluşturmaya çalışıyorsunuz. Her neyse, neden buna ihtiyacınız olduğunu yazmalısınız. Cevap vermeye çalışacağım. Her modülün kendi yolu olmalıdır, bu yüzden yönlendirme modülü sıkı ve statik olmalıdır. Bunu güvenlik için deniyorsanız, koruyucular kullanın ve öğeyi menü bileşeninden gizleyin.
Eğer şu tür URL’lere ihtiyacınız varsa: "/username1/profile", "/username2/profile", kendi kodunuzu kullanabilir ya da tembel yüklemeyi kullanabilirsiniz. Ana modül için yönlendirme dosyası oluşturun:
{ path: ':username', loadChildren: '../users/user.module#UserModule' }
Sonra alt modül için yönlendirme dosyası oluşturun:
{ path: '', loadChildren: 'UserComponent', children: [
{ path: '', redirectTo: 'profile' },
{ path: 'profile', component: ProfileComponent}
]
}
Vakanız tarafından güncellendi:
Durumunuza bağlı olarak HTML dosyanızı değiştirebilirsiniz. Örneğin, app.component.html dosyasında kodunuz şu şekildeyse:
<div>
<router-outlet></router-outlet>
</div>
Bunu şu şekilde değiştirebilirsiniz:
<div *ngIf="isLoggedIn | async">
<admin-panel></admin-panel>
</div>
<div *ngIf="(!isLoggedIn | async)">
<router-outlet></router-outlet>
</div>
