如何使用Angular5声明服务

时间:2018-01-15 01:23:18

标签: javascript angular angular5

我有一个看起来像这样的Angular服务

@Component({})
@Inject(ChromeDataService)
@Injectable()
export class MainDataService {

}

当我运行ng build --prod时,我收到此错误

  

错误输入:没有为组件MainDataService指定模板

我唯一的猜测是Angular服务不需要是一个组件?所以我删除了@Component注释,但后来我得到了这个:

  

错误输入:意外值'MainDataService in   /home/.../main.ts'   由模块'SharedModule'声明   /home/.../src/app/shared.module.ts'。   请添加@ Pipe / @ Directive / @ Component注释。

呃,我如何在Angular5中创建服务?

3 个答案:

答案 0 :(得分:2)

要正确使用角度服务,您只需要getStudentStatus() { let item = JSON.parse(localStorage.getItem('username')) this.auth.getStudentData(item.username).then( data => { this.studentList = data; } )

这是一个例子

injectable()

然后在@Injectable() export class myService { //some logic } 或功能模块中,您可以在app.module数组中添加服务,并让角度DI为您处理服务。

providers

构造函数将告诉angular自动神奇地注入你需要的服务。

答案 1 :(得分:0)

您的服务只需要@Injectable()decorator.like this

import {Injectable} from '@angular/core'
import {Router} from '@angular/router'


@Injectable()
export class AuthService {

  constructor(private router: Router) {}


}

答案 2 :(得分:0)

这就是我在Angular中声明服务的方式:

@Injectable()
export class AuthService {
     ...
}

我认为你只需要@Injectable装饰者。也许您的问题来自shared.module.ts