哪个@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
,但在附加到视图时也应该更改回其先前的状态。但总的来说,我认为两者都不应该被发出。
2条答案
按热度按时间3bygqnnd1#
我会尝试看一下!我注意到的第一件事是,这个问题只发生在传统的提供商身上,但是
provideAnimationsAsync()
没有出现这个问题!bqujaahr2#
这个有什么进展吗?我也有同样的问题。