Angular 错误:Can';t解析'的所有参数;组件';(?,[对象])
*我正在跑步 我不明白为什么我会犯这个错误 我通读了关于这个错误的类似SO问题,似乎没有一个明确的答案 我有一个基本类:Angular 错误:Can';t解析'的所有参数;组件';(?,[对象]),angular,Angular,*我正在跑步 我不明白为什么我会犯这个错误 我通读了关于这个错误的类似SO问题,似乎没有一个明确的答案 我有一个基本类: @Injectable() export class MyBase { constructor(private uri: string, private httpClient: HttpClient) { } public deleteCall(id: string) { return this.httpCli
@Injectable()
export class MyBase {
constructor(private uri: string, private httpClient: HttpClient) { }
public deleteCall(id: string) {
return this.httpClient
.delete(this.uri + "/" + id);
};
}
我有几个类扩展了这个类:
@Injectable()
export class GizmoService extends ServiceBase {
constructor(private http: HttpClient) {
super(environment.gizmoUri, http);
}
}
我将以以下方式实施我的应用程序所提供的服务:
export class GizmoComponent implements OnInit {
constructor(private router: Router,
private gizmoService: GizmoService,
private dialog: MatDialog) { }
deleteGizmo(id: string) {
let deleteDialog = ...;
deleteDialog.afterClosed()
.subscribe(x => {
if (x === true) {
this.gizmoService.deleteCall(id)
.subscribe(() => this.loadDataSource());
}
});
};
}
据我所知,将uri字符串从派生类传递到基类似乎是一个问题
我已经检查了我的app.module.ts,并确保派生类在基类之前声明
在我的示例中,我没有看到任何循环引用
此错误的原因是什么?我如何解决此问题?它与
MyBase
类url参数相关,DI系统尝试将此基作为令牌注入字符串,但没有,这就是为什么您得到(?,…)
,因此要解决此问题,您需要使用inject
在app.module
中添加{provide:'url',useValue:'127.0.0.1'}
到提供者列表,并像这样更新MyBase
类
@Injectable()
export class MyBase {
constructor(@Inject('url') private uri: string, private httpClient: HttpClient) { }
public deleteCall(id: string) {
return this.httpClient
.delete(this.uri + "/" + id);
};
}
决议是两倍的*多亏了爆炸药丸和Silvermind
一旦这两个步骤都完成,错误就消失了。不要将基类标记为
可注入的
。否则它将尝试注入没有injectorI从基类中删除@Injectable的“字符串”,并且仍然有相同的错误。您确定更改了正确的类吗?您有两个名称MyBase
和ServiceBase
。或者这是一个输入错误?还要确保不要将基类添加到模块中的提供程序中。一旦我将其从模块中删除,错误就会消失。