Angular 4:服务是否也需要在组件中导入?

时间:2017-10-03 14:09:44

标签: angular dependency-injection

我正在学习角度4,我已经在app.module.ts的提供者列表中注册了我的服务。

以下是代码示例: -

app.module.ts

import { FruitService } from './main/fruit.service';
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';

import { AppComponent } from './app.component';
import { MainComponent } from './main/main.component';

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

fruit.service.ts

export class FruitService {
    getFruits() {
        return ['apple', 'mango', 'banana'];
    }
}

main.component.ts

// import { FruitService } from './fruit.service';
import { Component, OnInit } from '@angular/core';

@Component({
  selector: 'main',
  templateUrl: './main.component.html',
  styleUrls: ['./main.component.css']
})
export class MainComponent implements OnInit {
    fruits;

  constructor(frts: FruitService) {
      this.fruits = frts.getFruits();
  }
}

编译器发出以下错误: -

Failed to compile.

/home/user/Projects/ng4app/src/app/app.component.ts (12,20): Cannot find name 'FruitService'.

但是,如果不先将服务导入组件,我就无法使用该服务。一旦注册到app.module,它不应该在全球范围内可用吗?

1 个答案:

答案 0 :(得分:0)

由于依赖注入,你需要在app.module中使用它。但这并不意味着您不必在每个组件中导入它。

将其导入app.module将确保实例全局可用于导入。

相关问题