找不到angular2中的名称错误

时间:2017-06-13 09:39:47

标签: angular angular2-services

我有一个名为customComponent

的组件
import {Component} from '@angular/core';
import { appService } from './app.service'; 
@Component({
  selector: 'custom-root',
  template: `<h1>how</h1>
    <ul *ngFor="let hero of heroes"><li>{{hero}}</li></ul>`,
})
export class CustomComponent {
    heroes = ['first','second','third'];
   //heroes;

   value: string = ""; 
 // constructor(appService: appService) { }  

   /* ngOnInit(): void { 
      this.value = this._appService.getApp(); 
   } */

}

appService我有

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

@Injectable()
export class appService {  
   getApp(): string { 
      return "Hello world"; 
   } 
} 

app.module.ts我正在导入应用服务

import { appService } from './app.service'; 


@NgModule({
  declarations: [
    AppComponent,CustomComponent
  ],
  imports: [
    BrowserModule,
    FormsModule,
    HttpModule,
    RouterModule
   // appService
  ],  
  providers: [appService],
  bootstrap: [AppComponent]
})
export class AppModule { }

现在我收到错误

  

在自定义组件第15行

中找不到名称appService

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

在CustomComponent文件中导入:

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

然后在DI的构造函数中使用它:

constructor(@Inject(appService) private appService) { }

在此之后,请确保在模块的提供程序中取消注释appService。

imports: [
  BrowserModule,
  FormsModule,
  HttpModule,
  RouterModule,
  appService
],

答案 1 :(得分:0)

替换此代码块

export class CustomComponent {
    heroes = ['first','second','third'];
   //heroes;

   value: string = ""; 
   constructor(private appService: appService) { }  

   ngOnInit(): void { 
      this.value = this.appService.getApp(); 
   }

}

问题:

你正在调用this._appService.getApp();

  1. 您尚未定义_appService。

  2. 没有针对appService的DI。