angular - angular 9 依赖注入错误。" 该类不能通过依赖注入创建,因为它没有 Angular 装饰器
问题描述
相同的代码在角度 8 中对我有用,但现在它给了我这个错误。“‘BaseService’类不能通过依赖注入创建,因为它没有 Angular 装饰器。这将导致运行时出错。
Either add the @Injectable() decorator to 'BaseService', or configure a different provider (such as a provider with 'useFactory')."
我只是想在这里实现简单的继承。
1)BaseService.ts(父类)
import { environment } from 'src/environments/environment';
import { HttpHeaders } from '@angular/common/http';
export class BaseService {
url
constructor(postfixUrl) {
this.url = environment.backendUrl + postfixUrl
}
setUpHeaders() {
return {
headers: new HttpHeaders({
'Content-Type': 'application/json'
})
}
}
}
2)AuthService.ts(子类)
import { Injectable } from "@angular/core";
import {HttpClient} from '@angular/common/http'
import { BaseService } from './base.service';
@Injectable({
providedIn: 'root'
})
export class AuthService extends BaseService {
url
constructor(private http: HttpClient) {
super('auth')
}
register(user) {
return this.http.post(this.url, user, this.setUpHeaders())
}
}
3) auth.module.ts
@NgModule({
declarations: [
AuthComponent,
LoginComponent,
RegisterComponent
],
imports: [
CommonModule,
AuthRoutingModule,
HttpClientModule,
FormsModule,
ReactiveFormsModule
],
providers: [AuthService, BaseService]
})
export class AuthModule { }
解决方案
如果您想为单个模块使用服务,那么您不需要使用@Injectable({ providedIn: 'root' })
.
两步:
@Injectable()
添加您的服务。providers: [ BaseService ]
添加你的模块内部NgModule
。
推荐阅读
- firebase - Firebase 云消息传递令牌停止工作 - 404 NOT FOUND
- c++ - QPolarChart 隐藏径向刻度标签
- asp.net - 从 ASP.Net Razor 页面中的 .cshtml 页面链接到存储过程结果集
- java - 如何使用装饰器 DP 将 addDough 方法写入我的披萨
- git - Gitlab/Bitbucket - 在特定项目中阻止管理员访问
- java - MySQL:EOFException:无法从服务器读取响应。预期读取 4 个字节,在连接意外丢失之前读取 0 个字节
- javascript - 如何改变模态内容(没有引导程序)
- python - 根据项目符号展开一行
- html - 是什么导致使用不同大小的背景图像产生如此不同的结果?
- c - 如何在keil中使用GNU原子内存访问函数