javascript - 组件中无法访问 Angular 2 提供程序

标签 javascript angular angular2-services

我是 Angular 2 的新手。我一直在关注遗留的快速启动应用程序,英雄之旅。

我创建了应用程序中提到的服务。

我有一个服务 HeroService。用于拉取所有英雄数据。

我在 app.module 文件中包含了 HeroService 作为提供者,以便能够在整个应用程序中为所有应用程序访问它。

我的 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, HeroesComponent, HeroDetailComponent ],
  providers: [ HeroService ],
  bootstrap: [ AppComponent ]
})
export class AppModule { }

我想访问 HeroService 以获取数据的组件文件是:

export class HeroesComponent implements OnInit {
    constructor(private heroService: HeroService) { }
}

问题是我在构建项目时遇到这样的错误:

Cannot find name 'HeroService'.

我已正确执行所有步骤。如果我在我的 HeroesComponent 中导入 HeroService,它似乎可以工作。但未导入时失败。 我错过了一些步骤吗?据我所知,在 app.module 上声明提供者将注册它以在整个应用程序/组件中使用,而无需每次都导入它。

如果我哪里不对,请指正。

最佳答案

你还需要在组件内部导入

import { HeroService }  from './hero.service';

关于javascript - 组件中无法访问 Angular 2 提供程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44652410/

相关文章:

javascript - 在旋转的 div 上缩放时计算新的左侧和顶部

dart - 如何等待Angular2完成渲染

Angular2 服务 : Getting different instances in two components even though there's only one provider

html - 无法读取未定义的属性 'nativeElement' - ngAfterViewInit

angular - 没有带有ngrx/效果的HttpHandler的提供者

angular - Observable 类型不存在属性 'then'

angular - 如何将自定义服务注入(inject)另一个自定义服务?

javascript - 是否可以使用 Javascript 使 .manifest 缓存失效?

javascript - 如果未设置 cookie 且未选择任何输入,则在 10 秒后隐藏登录表单

javascript - 如何使搜索结果根据搜索条件打开特定页面