繁体   English   中英

如何使用Angular5声明服务

[英]How to declare a service with Angular5

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

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

}

当我运行ng build --prod ,出现此错误

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

我唯一的猜测是Angular服务不需要成为组件吗? 所以我删除了@Component批注,但是得到了:

中的错误:模块“ /home/.../src/app/shared.module.ts中的SharedModule”声明了意外的值“ /home/.../main.ts中的MainDataService”。 请添加@ Pipe / @ Directive / @ Component批注。

嗯,如何在Angular5中创建服务?

要正确使用角度服务,您只需要injectable()

这是一个例子

@Injectable()
export class myService {
 //some logic
}

然后在您的app.module或功能模块中,将服务添加到providers数组中,并让angular DI为您处理服务。

@Component({
usual stuff with template, selector, css})
export class someComponent {
constructor(private myService: MyService){}
}

构造函数将告诉angular自动注入所需的服务。

您的服务仅需要@Injectable()装饰器。

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


@Injectable()
export class AuthService {

  constructor(private router: Router) {}


}

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM