繁体   English   中英

Angular2-问题与:RouterModule.forRoot

[英]Angular2 - Issue with: RouterModule.forRoot

我正在关注Angular2教程: 英雄之旅

我的所有教程旅程都按预期进行,但是到达以下几点:

https://angular.io/docs/ts/latest/tutorial/toh-pt5.html#!#add-a-dashboard-

它无法正常工作。

它假定与以下对象一起工作:

1-在文件上:“ app.module.ts”,取消注释代码: RouterModule.forRoot...

2-在文件“ app.component.ts”上,将以下行添加到模板:

<a routerLink="/heroes">Heroes</a>
<router-outlet></router-outlet>

我知道我应该提供一个最小化的代码,但我认为这对我来说是不可能的,因为我不确切知道问题出在哪里。 我可以说的是,我一直在逐步学习本教程,并且一直在努力。

在这里,您可以下载到此为止的源代码:

https://github.com/nightclubso/project_03

就像现在一样,它正在工作。 没有编译问题。 但是,如果您按照上述两点进行操作,则在浏览器控制台上会看到很多错误。

您必须修改的文件(如本教程所建议)是:

app.module.ts最终具有以下代码:

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

import { AppComponent }         from './app.component';
import { HeroDetailComponent }  from './hero-detail.component';
import { HeroesComponent }      from './heroes.component';
import { HeroService }          from './hero.service';


@NgModule({
  imports:      [
    BrowserModule,
    FormsModule,
    RouterModule.forRoot([
      {
        path: 'heroes',
        component: HeroesComponent
      }
    ])
  ],
  declarations: [
    AppComponent,
    HeroDetailComponent,
    HeroesComponent,
  ],
  providers:    [ HeroService ], 
  bootstrap:    [ AppComponent ]
})
export class AppModule { }

app.component.ts最终具有以下代码:

import { Component } from '@angular/core';

@Component ({
    selector: "my-app",
    template: `
        <h1>{{title}}</h1>
        <a routerLink="/heroes">Heroes</a>
        <router-outlet></router-outlet>
    `,
})
export class AppComponent {
    title: string = "Tour of Heroes";
}

但由于某种原因,它什么也不显示。

关于如何解决这个问题的任何想法?

您刚刚在应用程序中配置了routes 因此,由于configured routesrouter-outlet ,您一无所获(作为输出)。 因此,在这里您需要显式提供路由配置,如下所示,

RouterModule.forRoot([
  {
    path: '',
    redirectTo: '/heroes',
    pathMatch: 'full'
  },
  {
    path: 'heroes',
    component: HeroesComponent
  }
])

刚遇到这个问题。 如果查看错误消息,则表明您需要为APP_BASE_HREF令牌提供一个值或添加一个基本元素。 因此,您可以(推荐选项)打开index.html文件并添加

< base href = "/" >

在head元素下面给出:

...
<head>
  <base href="/">
  <title>Angular QuickStart</title>
...

要么

转到您的app.module.ts文件,然后在您的“ providers:...”数组中添加

{provide: APP_BASE_HREF, useValue : "/" }

赠送:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM