Angular 4 не загружает компонент

Я пытаюсь использовать Angular Routes в приложении Angular 4, но приложение не может загрузить компонент, соответствующий запрошенному маршруту:

Вот app-routing.module.ts:

import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { DashboardComponent } from './dashboard/dashboard.component';

const routes: Routes = [
  { path: 'dashboard', component: DashboardComponent },
  { path: '', redirectTo: '/dashboard', pathMatch: 'full' },
];

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

app.module.ts выглядит так:

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';

import { AppComponent } from './app.component';
import { DashboardComponent } from './dashboard/dashboard.component';
import { AppRoutingModule } from './app-routing.module';

@NgModule({
  declarations: [
    AppComponent,
    DashboardComponent,
  ],
  imports: [
    BrowserModule,
    AppRoutingModule,
  ],
  providers: [ ],
  bootstrap: [ AppComponent ]
})
export class AppModule { }

приложение.component.html:

<h1>
    Welcome to {{title}}!
</h1>
<router-outlet></router-outlet>

My dashboard.component.html :

<p>dashboard works!</p>

Я пытаюсь понять, что не так, также посмотрел учебник по маршрутизации Angular 4. Пожалуйста помоги.


person Falak Marri    schedule 20.11.2017    source источник
comment
импортировать {AppRoutingModule} из './/app-routing.module'; Лут в .//app.. почему две косые черты?   -  person Serginho    schedule 20.11.2017
comment
Этот импорт был добавлен ng generate в app.module.ts. Однако он попытался удалить одну косую черту, но это не сработало. Компонент «AppComponent» не загружается.   -  person Falak Marri    schedule 20.11.2017
comment
Какую ошибку вы получаете?   -  person Ankit Kapoor    schedule 20.11.2017
comment
Я посмотрел в консоли браузера, там написано: Error: No base href set. Please provide a value for the APP_BASE_HREF token or add a base element to the document. at new PathLocationStrategy (common.js:647) at provideLocationStrategy (router.js:6995) at _callFactory (core.js:10651) at _createProviderInstance$1 (core.js:10599) at initNgModule (core.js:10549) at new NgModuleRef_ (core.js:11792) at createNgModuleRef (core.js:11782) at Object.debugCreateNgModuleRef [as createNgModuleRef] (core.js:14092) at NgModuleFactory_.create (core.js:15216) at eval (core.js:5370)   -  person Falak Marri    schedule 20.11.2017


Ответы (2)


Я нашел решение после некоторого устранения неполадок и нашел ответ на этом ссылка. По сути, в app.module.ts нам просто нужно добавить этот оператор импорта для импорта токена APP_BASE_HREF:

import { APP_BASE_HREF } from '@angular/common';

И добавьте массив APP_BASE_HREF в providers:

providers: [ {provide: APP_BASE_HREF, useValue: '/' }],

Другим решением в соответствии с документацией Angular является просто добавление <base href="/"> в качестве первого дочернего элемента тега <head>. .

person Falak Marri    schedule 20.11.2017

ну, я ошибся

exports: [RouterModule] 

вы экспортируете основной модуль из @angular/router, поэтому ваш AppModule расширяется с помощью RouterModule, а не вашего маршрута, и вместо создания всего модуля просто экспортируйте константу, например

export const routing: ModuleWithProviders = RouterModule.forRoot(routes);

и импортируйте маршрутизацию в свой модуль приложения

person vaibhavmaster    schedule 07.12.2017