angular - 这实际上是循环依赖还是误报?
问题描述
设置
我在这里有两个组件:
SliderComponent
SlideComponent
它们都是SliderModule
. 我相信你现在已经猜到了,一个是滑块,另一个是滑块的每个幻灯片。它的实现如下:
<app-slider>
<app-slide>
<p>Slide content!</p>
</app-slide>
</app-slider>
问题
为了对SliderComponent
每个SlideComponent
通过内容投影注入的引用,它调用:
@ContentChildren(SlideComponent) public slides: QueryList<SlideComponent>;
甜的没问题。但是现在为了将所有功能保留SliderComponent
在它所属的位置,每张幻灯片都需要对 的引用SliderComponent
,因此它调用:
constructor( @Inject(forwardRef(() => SliderComponent)) public slider: SliderComponent){}
问题
这实际上是循环依赖,还是误报?
我认为这是误报的原因是我可以正常编译 AOT,没有问题也没有延迟,并且整个应用程序运行良好。
把这个留在这里可以吗?我应该为此提交错误报告吗?或者这实际上是我应该尝试找到解决方法的问题吗?
解决方案
对不起斯蒂芬,我无法想象我会做类似@Inject(forwardRef(() => SliderComponent) 的事情
想象你的组件
<app-slider>
<app-slide (command)="Command($event)" [data]="dataShared">
</app-slider>
您的应用滑块
export interface ICommand
{
command:int;
data:any;
}
dataShared:any={title:"Title",date:New Date()}
Command(command:ICommand)
{
switch (command.command)
{
case 1:
method1(command.data);
break;
case 2:
method2();
break;
}
}
你的 app_slide
@Input() data; //We can use all the sharedData from parent
@Output() command= new EventEmitter<ICommand>();
doSomething() {
this.command.emit({command:1,data:this.largeData});
}
doSomethingMore() {
this.command.emit({command:2});
}
推荐阅读
- android - 在项目中,它没有在单独的模块中看到库导入
- angular - Angular 8:TypeError:无法读取未定义的属性“种类”,当为生产构建我的代码时
- python - 使用正则表达式删除单词
- mongodb - 无法索引并行数组
- ms-word - 为了支持 createDocument OfficeJs API 调用需要实现什么 WOPI API
- reactjs - Fabric UI Modal 自定义尺寸
- scala - 从列表中更新 DataFrame col 名称,避免使用 var
- php - 用户输入 Localhost 时打开 Direct Project 或 Directory
- elasticsearch - 如何通过 Kibana 从 elasticsearch 中的文档更新值
- sparql - 用 HAVING 过滤后如何计算结果?