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});
  }