我有一个看起来像这样的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中创建服务?
答案 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
。