Saya memiliki modul yang dimuat lambat AccountModule yang dimuat setelah mengakses https://localhost:4201/account.

app.routing.ts

const routes: Routes = [

  {
    path: '',
    loadChildren: () => import('./ui/pages/start/start.module')
      .then(m => m.StartModule)
  },


  {
    path: 'account',
    loadChildren: () => import('./ui/pages/account/account.module')
      .then(m => m.AccountModule)
  },

];

export const AppRouting = RouterModule.forRoot(routes, {
  useHash: false,
  enableTracing: false
});

AccountModule memiliki dua rute anak. Salah satunya dimuat dengan penuh semangat (/overview) sedangkan yang lain dimuat dengan malas (/albums).

Oleh karena itu, acount.routing.ts terlihat seperti ini:

const routes: Routes = [

  {path: '', redirectTo: 'overview', pathMatch: 'full'},

  {
    path: 'overview',
    component: AccountComponent,
  },

  {
    path: 'albums',
    loadChildren: () => import('./albums/albums.module').then(m => m.AlbumsModule),
    // component: AlbumsComponent  // This works!
  },

];

export const AccountRouting = RouterModule.forChild(routes);

Sekarang, jika saya menggunakan pemuatan "bersemangat" (component:AlbumsComponent) semuanya berfungsi. Tapi, jika saya beralih ke loadChildren: () => ... perutean tidak berfungsi lagi. routerLink ini

<app-raised-button [routerLink]="['/account/albums']">
  My Albums
</app-raised-button>

Hasil di https://localhost:4201/account/albums (berfungsi) atau https://localhost:4201/account/albums/overview (tidak berfungsi). Tapi kenapa? Dan bagaimana saya bisa memperbaiki masalah ini?

Mengapa berperilaku berbeda hanya karena cara modul/komponen dimuat?


Jika saya menyetel jalur ke ./albums:

{
  path: './albums',
  loadChildren: () => import('./albums/albums.module').then(m => m.AlbumsModule),
},

Saya baru saja mendapatkan

Kesalahan: Tidak dapat mencocokkan rute mana pun. Segmen URL: 'account/albums'

0
Stefan Falk 19 Januari 2020, 14:37

2 jawaban

Jawaban Terbaik

Saya kira Anda belum menyediakan Rute untuk albums.routing.module ?

Karena Anda telah mengarahkan albums.module, tetapi Anda mungkin tidak memberikan dari sana komponen apa yang telah Anda tampilkan.

Jika Anda belum membuat albums.routing.module, buat satu dan berikan rute default di modul yang sama.

const routes: Routes = [

  {path: '', component:AlbumsComponent } ];
2
Satish Pai 19 Januari 2020, 11:58

Pastikan di modul album Anda, Anda telah mengimpor rute Anda seperti yang ditunjukkan: RouterModule.forChild(albumsRoutes)

0
Steve KACOU 19 Januari 2020, 19:55