Angular:'Routes'只是指一个类型,但在这里被用作一个值

Angular: 'Routes' only refers to a type, but is being used as a value here

今天使用 Angular CLI + Angular Material 的新项目。

要从 'app.module.ts' 文件中的 @angular/router 导入 RouterModule 和 Routes,将 RouterModule 和 Routes 添加到导入中并出现此错误:

ERROR in src/app/app.module.ts(18,5): error TS2693: 'Routes' only refers to a
type, but is being used as a value here.

不知道如何解决这个问题。这是代码。

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';

import { AppComponent } from './app.component';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { NavigationComponent } from './navigation/navigation.component';
import { LayoutModule } from '@angular/cdk/layout';
import { MatToolbarModule, MatButtonModule, MatSidenavModule, MatIconModule, 
         MatListModule } from '@angular/material';

@NgModule({
declarations: [
  AppComponent,
  NavigationComponent
],
imports: [
  RouterModule,
  Routes,
  BrowserModule,
  BrowserAnimationsModule,
  LayoutModule,
  MatToolbarModule,
  MatButtonModule,
  MatSidenavModule,
  MatIconModule,
  MatListModule
],
providers: [],
bootstrap: [AppComponent]
})

export class AppModule { }

经过更多的阅读和课程,我在 /app 文件夹中创建了一个新的 'app-routing.module.ts' 文件,并放入以下代码,删除了 'app.module.ts' 文件中对 RouterModule 和 Routes 的导入,错误消失:

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

const routes: Routes = [
    // { path: '', component: '' },
    // { path: '', component: '' }
];

@NgModule({

})

export class AppRoutingModule {  }

我从中学到的课程确实说我可以按照我在 OP 中的方式完成,但显然那没有用(除非我遗漏了什么?)。

我想这是 'recommended' 的做法,但现在看起来更像是 必需的 方式。

或多或少如错误所述,Routes 是一个 Type 而不是实例化或可注入对象 - 因此您不能将其导入模块。您 可以 做的是使用它来声明您的应用程序路由,然后在导入 RouterModule 时使用它们来定义可用路由。

你的错误在这里:

无法导入Routes - 因为它是TYPE您只能导入其他模块。

文档很好地描述了模块导入的工作原理,如果您有兴趣:https://angular.io/guide/ngmodules#angular-modularity

这是一个简单的例子。

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';

import { AppComponent } from './app.component';
import { OneComponent } from './one/one.component';
import { TwoComponent } from './two/two.component';

const routes: Routes = [
  { path: 'one', component: OneComponent },
  { path: 'two', component: TwoComponent }
];

@NgModule({
  declarations: [
    AppComponent,
    OneComponent,
    TwoComponent 
  ],
  imports: [
    BrowserModule,
    RouterModule.forRoot(routes)
  ],
  exports: [
    RouterModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }