angular - Angular 更新 8.1 - 循环依赖警告
问题描述
自从更新到 Angular 8.1(8.0 有效)后,我收到了一个循环依赖警告,这对我来说真的没有意义。
我有SelectService
一些组件中提供的可注入服务。该服务正在使用一个类SelectableItem
。创建此类的实例时,服务本身作为参数传递。
item = new SelectableItem(
...
this
);
该类SelectableItem
不是可注入的,看起来像这样。
export class SelectableItem {
constructor(..., public selectService: SelectService) { }
}
现在自从 8.1 更新以来,我收到一个循环依赖警告:
可选项目.ts -> select.service.ts -> 可选项目.ts
SelectableItem
不是服务,怎么可能是循环依赖?
解决方案
你的SelectService
班级应该是这样的。将依赖SelectableItem
项作为服务类的属性。
import "SelectAbleItem" from "../selectable-item.ts
@Injectable()
class SelectService {
}
private selectItem: SelectItem;
public get SelectItem():SelectItem { return this.selectItem; }
现在在构造函数中SelectableItem
不要注入,SelectService
而是使用注入器来提供它。
class SelectableItem {
constructor() {
const injector = Injector.create([{provide: SelectService, useClass: SelectService, deps: [SelectableItem]]};
const selectService = injector.get(SelectService);
}
}
推荐阅读
- javascript - Javascript 根据条件创建新数组
- java - 如何将 Java 记录用作 ModelMapper 的 DTO?
- javascript - 如何在vue js内联单击@click事件上进行乘法运算
- vb.net - visual studio 2019 我怎么知道要导入的引用和路径设置
- node.js - async/await 用于 aws sdk 功能
- python - stockx.com 是否阻止网络抓取?
- html - 如何正确覆盖 CSS 样式?
- r - 删除 data.frame R 中的空格
- apache-spark - 流写入具有多个相同键的 delta Lake
- android - 如何在 Kotlin 中设置 smsmanager.sendTextMessage pendingIntents