Angular — Ошибка при создании маршрутов в Angular

#angular #typescript

#angular #typescript

Вопрос:

Я новичок в Angular и хочу создавать маршруты в своем приложении angular, и я получил ошибку в app.module.ts при объявлении службы маршрутов. Я запутался в том, что я пишу в скобках RouterModule.forRoot()

 error: error TS2304: Cannot find name 'Routes'.RouterModule.forRoot(Routes)
  

маршрут.service.ts:

 import { Injectable } from '@angular/core';
import { Routes } from '@angular/router';
import { ParentComponent } from '../parent/parent.component';
import { from } from 'rxjs';
import { ChildComponent } from '../child/child.component';

const appRoutes:Routes=[

  {path:"parent",component:ParentComponent},
  {path:"child",component:ChildComponent}
]
@Injectable({
  providedIn: 'root'
})
export class RoutesService {

  constructor() { }
}
  

app.module.ts:

 import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
// import {MessageserviceService} from './services/messageservice.service'
import {MessageserviceService} from './services/messageservice.service';

import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { ParentComponent } from './parent/parent.component';
import { ChildComponent } from './child/child.component';
import { RoutesService } from './services/routes.service';
import { RouterModule } from '@angular/router';

@NgModule({
  declarations: [
    AppComponent,
    ParentComponent,
    ChildComponent,
    
  ],
  imports: [
    BrowserModule,
    AppRoutingModule,
    RouterModule.forRoot(appRoutes)  //i got error in this line, 
    

  ],
  providers: [MessageserviceService,RoutesService],
  bootstrap: [AppComponent]
})
export class AppModule { }
  

Комментарии:

1. Возможно, вам также потребуется импортировать соответствующие маршруты сюда..

2. @MikeOne где? Не могли бы вы уточнить, пожалуйста?

Ответ №1:

Переместить это объявление

 const appRoutes: Routes = [

  {path:"parent",component:ParentComponent},
  {path:"child",component:ChildComponent}
]
  

к AppModule . Кроме того, похоже, что вы можете просто удалить RoutesService , я не думаю, что это выполняет какую-либо функцию.

Комментарии:

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

Ответ №2:

Если вы пытаетесь отделить маршруты от основного модуля, просто создайте routingModule, как это делается в документации angular:https://angular.io/tutorial/toh-pt5#add-the-approutingmodule

Кстати, ваш код просто не может работать. Если вы хотите сохранить «подходящие маршруты» в файле службы, то либо используйте

 export const appRoutes: Routes = [

  {path:"parent",component:ParentComponent},
  {path:"child",component:ChildComponent}
];
  

Но тогда ваш сервис просто бесполезен.

Или переместите соответствующие маршруты внутри вашего сервиса и объявите его как атрибут вашего сервиса.

В обоих случаях обязательно импортируйте соответствующие маршруты в AppModule.

Но опять же, это не совсем способ обработки маршрутизации в «обычном» приложении angular.