在Angular应用程序中路由具有不同参数的相同组件

时间:2020-01-08 13:15:35

标签: angular routing

我有一个包含三个模块的Angular应用程序,这些模块使用具有不同参数的相同组件。 我在下面使用了demarche,我认为这不是一个好的解决方案,我使用了预加载策略,但我对非重复组件的兴趣不止于此。每个组件的状态并不重要。

app-routing.module.ts

export const routes: Routes = [

  {
    path: 'module1',
    loadChildren: './modules/module1/module1.module#Module1'
  },

  {
    path: 'module2',
    loadChildren: './modules/module2/module2.module#Module2'
  },

  {
    path: 'module3',
    loadChildren: './modules/module3/module3.module#Module3'
  },

  {
    path: '**',
    redirectTo: '/module1',
  }

];

@NgModule({
  imports: [RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules })],
  exports: [RouterModule]
})

MODULE1

module1-routing.module.ts

const routes: Routes = [
    {
        path: '',
        component: Module1Component1
    },
    {
        path: 'second',
        component: Module1Component2
    }
];

Module1Component1

@Component({
    selector: 'app-module1-component1',
    template: ` <app-component1 [tabLink]="'AAA'" [columns] = "columns1"
     [displayedColumns] = "displayedColumnsA"> </app-component1> `

})

Module1Component2

@Component({
    selector: 'app-module1-component2',
    template: ` <app-component2 [FormControl]="formControlA" 
    [tabLink]="'AAA'" [searchFields] = "searchFields1"> </app-component2> `

})

MODULE2

module2-routing.module.ts

const routes: Routes = [
    {
        path: '',
        component: Module2Component1
    },
    {
        path: 'second',
        component: Module2Component2
    }
];

Module2Component1

@Component({
    selector: 'app-module2-component1',
    template: ` <app-component1 [tabLink]="'BBB'" [columns] = "columns2"
     [displayedColumns] = "displayedColumnsB"> </app-component1> `

})

Module2Component2

@Component({
    selector: 'app-module2-component2',
    template: ` <app-component2 [FormControl]="formControlB" 
    [tabLink]="'BBB'" [searchFields] = "searchFields2"> </app-component2> `

})

MODULE3:

module3-routing.module.ts

const routes: Routes = [
    {
        path: '',
        component: Module3Component1
    },
    {
        path: 'second',
        component: Module3Component2
    }
];

Module3Component1

@Component({
    selector: 'app-module3-component1',
    template: ` <app-component1 [tabLink]="'CCC'" [columns] = "columns3"
     [displayedColumns] = "displayedColumnsC"> </app-component1> `

})

Module3Component2

@Component({
    selector: 'app-module3-component2',
    template: ` <app-component2 [FormControl]="formControlC" 
    [tabLink]="'CCC'" [searchFields] = "searchFields3"> </app-component2> `

})

维护相同逻辑并最小化代码和加载时间的最佳方法是什么? enter image description here

1 个答案:

答案 0 :(得分:0)

我认为每个模块都应该是一个组件,这样我们就不会有重复的代码。如果组件繁重,那就不好了。