【发布时间】:2019-02-14 17:58:49
【问题描述】:
我是 Angular 新手,并试图一步一步学习,我有一项服务,需要在 Component 中使用它,但出现上述错误。
- 使用 Angular cli
ng new appName创建了一个应用程序 - 使用
ng g c comp-name创建了一个组件 - 使用
ng g s service-name创建了一个服务 -
当我在 Providers:['service-name'] 内的
app.module.ts中添加服务名称时。使用ng build || ng serve构建代码后出现以下错误Hash: 31c1abeb694df29adcbe时间:8299 毫秒 块 {es2015-polyfills} es2015-polyfills.js, es2015-polyfills.js.map (es2015-polyfills) 284 kB [初始] [渲染] chunk {main} main.js, main.js.map (main) 637 bytes [initial] [rendered] 块 {polyfills} polyfills.js, polyfills.js.map (polyfills) 93.1 kB [初始] [渲染] 块 {runtime} runtime.js, runtime.js.map (runtime) 6.08 kB [entry] [rendered] 块 {styles} styles.js,styles.js.map (styles) 16.3 kB [initial] [rendered]
src/app/app.module.ts(15,15) 中的错误:错误 TS2304:找不到名称“ServiceOneService”。
组件类:
import { Component, OnInit } from '@angular/core';
import {ServiceOneService} from "../service-one.service";
@Component({
selector: 'comp-one',
templateUrl: './comp-one.component.html',
styleUrls: ['./comp-one.component.css']
})
export class CompOneComponent implements OnInit {
list;
constructor(service: ServiceOneService) {
this.list = service.getList();
}
ngOnInit() {
}
}
服务类
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class ServiceOneService {
getList() {
return ["List Item 1","List Item 2","List Item 3","List Item 4"];
}
}
app.module.ts
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { CompOneComponent } from './comp-one/comp-one.component';
@NgModule({
declarations: [
AppComponent,
CompOneComponent
],
imports: [
BrowserModule
],
providers: [ServiceOneService], `// getting error here.`
bootstrap: [AppComponent]
})
export class AppModule { }
我已经在我的机器上安装了这些。
Npm : 6.1.0
Node : v8.9.4
Angular Version : "@angular/core": "~7.2.0",
Typescript : Version 3.1.1
有人可以在这里帮助我在向组件导入或添加服务时出了什么问题。
【问题讨论】:
-
您根本没有在该文件中导入它。话虽如此,您不需要提供它,因为您已经在该服务上使用了 providedIn。
-
@AlexanderStaroselsky 感谢您的回答,我看到providerIn : 'root',所以不需要在provider :[] 内的app.module.ts 中再添加一次的原因,希望我理解正确。它现在可以工作了。
标签: javascript angular typescript angular-cli angular7