`ModuleWithProviders` - 当我将`routes`移到单独的文件中时是否需要?

时间:2018-03-30 04:49:20

标签: angular

我在其中一个教程中看到,当我将routes文件分开时,我应该将ModuleWithProviders包含在文件中。但即使没有这个,这一切都有效。

这真的需要吗?还是angular5需要这个?任何人都可以帮助我正确理解ModuleWithProviders吗?

这是我的分隔router.js文件:

import {RouterModule, Routes } from "@angular/router";
import {ModuleWithProviders} from "@angular/core/src/metadata/ng_module";
import { CalcComponent } from './calc/calc.component';
import { HomeComponent } from './home/home.component';
import { NotFoundComponent } from './notfound/notfound.component';

export const AppRoutes:Routes = [
    {path:"calc",component:CalcComponent},
    {path:"",component:HomeComponent},
    {path: '**', component: NotFoundComponent }
];

export const ROUTING = RouterModule.forRoot(AppRoutes);

感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

ModuleWithProviders是应该由forRoot方法返回的接口。 ModuleWithProviders对象是具有ngModule属性的普通对象,该属性包含使用providers属性中的其他提供程序扩充的实际模块类。

由于ModuleWithProviders是一个接口,因此它的用法是可选的。

答案 1 :(得分:0)

ModuleWithProviders未导入主应用程序路由文件(主应用程序已提供服务),添加到您创建的惰性模块中。

app-routing.ts

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { RouterModule, Routes} from '@angular/router';
// views
import { NotFoundComponent } from '@sp-views/errors/not-found/not-found.component';


const appRoutes: Routes = [

   { path: '', loadChildren: '@sp-views/content/content.module#ContentModule' },
   { path: '**', component: NotFoundComponent }
]

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

内容routing.ts

内容模块(延迟加载所以需要ModuleWithProviders,为模块内容提供服务)

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

const ContentRoutes: Routes = [
    { 
        path: '',
         loadChildren: '@sp-views/content/content.module#ContentModule',

    },

];

export const ContentRouting: ModuleWithProviders = RouterModule.forChild(ContentRoutes);