我正在学习角度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,它不应该在全球范围内可用吗?
答案 0 :(得分:0)
由于依赖注入,你需要在app.module中使用它。但这并不意味着您不必在每个组件中导入它。
将其导入app.module将确保此实例全局可用于导入。