gpt4 book ai didi

angular - : Can't resolve all parameters for 'Component' (? 错误,[object Object])

转载 作者:太空狗 更新时间:2023-10-29 19:32:20 24 4
gpt4 key购买 nike

*我正在运行 Angular 6。

我不明白为什么会出现此错误。

我通读了关于此错误的类似 SO 问题,但似乎没有明确的答案。

我有一个基类:

 @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 参数相关 angular DI 系统尝试将此基础作为 token 注入(inject)字符串但没有它,这就是为什么你得到 (?, ...) ,所以要解决这个问题你需要使用 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);
};
}

关于angular - : Can't resolve all parameters for 'Component' (? 错误,[object Object]),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52722904/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com