Javascript 在两个子组件之间切换时,Angular ngIf会导致高度CSS转换
我有一个角度的“按钮”组件,有一个Javascript 在两个子组件之间切换时,Angular ngIf会导致高度CSS转换,javascript,angular,Javascript,Angular,我有一个角度的“按钮”组件,有一个加载输入。如果该值为false,则显示通过内容投影显示的按钮文本()。如果true,则隐藏内容并显示“微调器”组件 使用*ngIf在模板中完成此操作: <button class="btn" [ngClass]="{'loading': loading}"> <ng-content *ngIf="!loading"></ng-content> <app-spinner *ngIf="loading">&
加载
输入。如果该值为false
,则显示通过内容投影显示的按钮文本(
)。如果true
,则隐藏内容并显示“微调器”组件
使用*ngIf
在模板中完成此操作:
<button class="btn"
[ngClass]="{'loading': loading}">
<ng-content *ngIf="!loading"></ng-content>
<app-spinner *ngIf="loading"></app-spinner>
</button>
我想知道这是否是因为在瞬间,Angular的更改检测工作时,这两个组件都显示在屏幕上,但我不确定。我已经测试了stackblitz,并从中删除了填充。btn
类将停止增加按钮大小
这是因为在第一帧中,应用了.btn
中的填充,使按钮升高其高度。然后,从.loading
类应用第二种样式,它将填充重置为padding:0 12px
,然后高度变为正常大小。为什么要保留transition属性?你想在那个按钮上设置什么动画?与其将其设置为“全部”,不如仅将其设置为实际要设置动画的属性。组件不“存在”在一起,它们会被交换,但您告诉浏览器要花0.25秒来设置按钮的动画,所以它们会保持在一起。您也可以在加载程序中以0,25秒的延迟设置动画