我在其中一个教程中看到,当我将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);
感谢您的帮助。
答案 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);