Как я могу перенаправить на дочерний маршрут, присоединившись к моему приложению? - PullRequest
1 голос
/ 07 ноября 2019

У меня есть файл app-routing-module.ts и мой файл web-template.module.ts, мне нужно, чтобы мое приложение начиналось с 'inicio / list', но список является дочерним маршрутом, как я могу перенаправитьс самого начала моей заявки на этот маршрут, учитывая, что это два разных файла.

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


const routes: Routes = [{
 path : 'inicio',
 loadChildren : './modules/web-template/web-template.module#WebTemplateModule'
 },{
  path : '**', pathMatch : 'full',
  redirectTo : 'inicio'
}];

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

 import { NgModule } from '@angular/core';
 import { RouterModule, Routes } from '@angular/router';
 import { TemplateComponent } from './template/template.component';
 import { NewsInitComponent } from '../pages/news-init/news-init.component';

  const routes: Routes = [
    { path : '',
      component : TemplateComponent,
      children: [
     {
    path : 'list',
    component : NewsInitComponent
     }
   ]
   }
  ];

  @NgModule({
   imports: [RouterModule.forChild(routes)],
   exports: [RouterModule]
  })

  export class WebTemplateRoutingModule { }

Я пытался перенаправить из файла web-template.module.ts, но все равно не работает.

Ответы [ 2 ]

0 голосов
/ 07 ноября 2019

Это мой app-routing.module.ts и второй код, это мой web-template-routing.module.ts

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


const routes: Routes = [{
  path : 'inicio',
  loadChildren : './modules/web-template/web-template.module#WebTemplateModule'
},{
  path : '**', redirectTo: 'inicio' 
}];

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

import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { TemplateComponent } from './template/template.component';
import { NewsInitComponent } from '../pages/news-init/news-init.component';
import { NewDetailComponent } from '../pages/new-detail/new-detail.component';

const routes: Routes = [
{
  path: '',
  component : TemplateComponent,
  children: [
    { path : 'noticias', component : NewsInitComponent },
    { path : 'noticias/detalle', component : NewDetailComponent },
    // this will redirect '/inicio' to `inicio/list`
    { path : '', redirectTo: 'noticias', pathMatch: 'full' },
    // this will redirect '/inicio/nonexistint' to `inicio/list`
    { path : '**', redirectTo: 'noticias' }
  ]
 }
];

@NgModule({
 imports: [RouterModule.forChild(routes)],
 exports: [RouterModule]
})

export class WebTemplateRoutingModule { }

В заключение первоевам нужно сделать, это загрузить модуль дочерних маршрутов в app-routing.module с основным перенаправлением, как только модуль загружается с дочерними маршрутами, вы делаете другое перенаправление, чтобы загрузить дочерний маршрут, это в файле, который мышаблон-routing.module.ts

0 голосов
/ 07 ноября 2019

Вы должны просто перенаправить на inicio/list в app.module:

  { path : '**', redirectTo : 'inicio/list' } // you don't need pathMatch: 'full' in a catch-all rule

Кроме того, я бы немного расширил маршрутизацию в модуле веб-шаблона, добавив пустое правило и универсальный метод. править. Как это:

import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { TemplateComponent } from './template/template.component';
import { NewsInitComponent } from '../pages/news-init/news-init.component';

const routes: Routes = [
  {
    path: '',
    component : TemplateComponent,
    children: [
      { path : 'list', component : NewsInitComponent },
      // this will redirect '/inicio' to `inicio/list`
      { path : '', redirectTo: 'list', pathMatch: 'full' },
      // this will redirect '/inicio/nonexistint' to `inicio/list`
      { path : '**', redirectTo: 'list' }
    ]
  }
];

@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule] // I don't think you need to export this.
})
export class WebTemplateRoutingModule { }
...