Angular 这实际上是一个循环依赖,还是一个误报? 设置
我这里有两个因素:Angular 这实际上是一个循环依赖,还是一个误报? 设置,angular,Angular,我这里有两个因素: SliderComponent SlideComponent 它们都是SliderModule的一部分。我相信你现在已经猜到了,一个是滑块,另一个是每个滑块对应的滑块。其实施情况如下: <app-slider> <app-slide> <p>Slide content!</p> </app-slide> </app-slider> 甜心,没问题。但现在,为了保持Sli
SliderComponent
SlideComponent
SliderModule
的一部分。我相信你现在已经猜到了,一个是滑块,另一个是每个滑块对应的滑块。其实施情况如下:
<app-slider>
<app-slide>
<p>Slide content!</p>
</app-slide>
</app-slider>
甜心,没问题。但现在,为了保持SliderComponent
中的所有功能,每张幻灯片都需要引用SliderComponent
,因此它调用:
@ContentChildren(SlideComponent) public slides: QueryList<SlideComponent>;
constructor( @Inject(forwardRef(() => SliderComponent)) public slider: SliderComponent){}
问题
这实际上是一个循环依赖,还是一个误报
我认为这是一个误报的原因是,我可以AOT编译得很好,没有问题,没有延迟,整个应用程序工作得很好
把这个留在这里可以吗?我应该为此提交错误报告吗?或者这真的是一个我应该努力解决的问题吗?对不起,Stephen,我无法想象我会做类似@Inject(forwardRef(()=>SliderComponent)的事情 想象一下你的组件
<app-slider>
<app-slide (command)="Command($event)" [data]="dataShared">
</app-slider>
您的应用程序\u幻灯片
@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});
}
@Input()data;//我们可以使用来自父级的所有sharedData
@Output()命令=新的EventEmitter();
doSomething(){
emit({command:1,data:this.largeData});
}
doSomethingMore(){
emit({command:2});
}
试试“slide”不需要“slider”。您可以使用输出向家长发送一些值,或者使用服务共享一些变量。这只是个人意见,如果我们需要注入组件,我们需要重新思考问题(我不能说它错了,只是我不喜欢)我不同意,组件注入是有原因的,在这样的情况下,当两个组件之间需要进行简单的通信时,尤其是在这样的父子关系中,组件注入可以避免不必要的服务。当然,撇开观点不谈,我们仍然不知道这是否是误报在这种情况下,我无法控制app slide
标记的实现,因此我没有实现这一点的方法,正如我前面提到的,组件注入就是为了实现这一点。最终目标是使滑块的实现对实现者尽可能做到代码盲。而我确实可以使用serv为了实现相同的行为,我个人不喜欢服务在组件之间来回传递一个或两个值,而组件之间可以直接访问。这也不能回答最初的问题。
@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});
}