angular 当ViewRef从ViewContainer中分离/重新插入时,动画状态会中断,

p3rjfoxz  于 6个月前  发布在  Angular
关注(0)|答案(2)|浏览(59)

哪个@angular/*包是bug的来源?

animations

这是一个回归吗?

描述

当手动从包含有angular动画的ViewContainerRef中分离一个ViewRef时,动画状态会变为void。当再次将相同的ViewRef插入到ViewContainerRef中时,动画状态不会从void改变,并且从此阶段不会再发出更多的AnimationEvents
使用给定的模板和Component类:

<ng-template #mySlot />
<ng-template #theTpl >
   <app-some-component /> <!-- SomeComponent, which has some @animations inside -->
</ng-template>
class AppComponent implements AfterViewInit {

  @ViewChild('mySlot', { read: ViewContainerRef })
  private mySlot: ViewContainerRef
  
  @ViewChild('theTpl', { read: TemplateRef })
  private theTpl: TemplateRef<void>

  private vr: ViewRef | null

  ngAfterViewInit() {
    this.mySlot.createEmbeddedView(this.theTpl)
    // this.mySlot.createComponent(SomeComponent) // <-- wouldn't make any difference
  }

  removeVrFromVc() {
    this.vr = this.mySlot.detach()
  }
  insertVrIntoVc() {
    if (this.vr) {
      this.mySlot.insert(this.vr)
      this.vr = null
    }
  }

}

如果我们首先调用removeVrFromVc,然后稍后(或立即)调用insertVrIntoVc,动画状态就是错误的/损坏的,不再发出任何动画事件。

请提供一个最小复现bug的链接

https://stackblitz.com/edit/75z7lr?file=src%2Fapp%2Fapp.component.ts

请提供您看到的异常或错误

  • 无响应*

请提供您在哪个环境中发现此bug的(运行ng version)

Angular CLI: 17.0.0
Node: 18.18.0
Package Manager: yarn 1.22.19
OS: linux x64

Angular: 17.0.0
... animations, cli, common, compiler, compiler-cli, core
... platform-browser, platform-browser-dynamic, ssr

Package                         Version
---------------------------------------------------------
@angular-devkit/architect       0.1700.0
@angular-devkit/build-angular   17.0.0
@angular-devkit/core            17.0.0
@angular-devkit/schematics      17.0.0
@schematics/angular             17.0.0
rxjs                            7.4.0
typescript                      5.2.2
zone.js                         0.14.0

还有其他信息吗?

当动画状态从视图中移除时确实会更改为void,但在附加到视图时也应该更改回其先前的状态。但总的来说,我认为两者都不应该被发出。

3bygqnnd

3bygqnnd1#

我会尝试看一下!我注意到的第一件事是,这个问题只发生在传统的提供商身上,但是provideAnimationsAsync()没有出现这个问题!

bqujaahr

bqujaahr2#

这个有什么进展吗?我也有同样的问题。

相关问题