我已經遇到了類似的問題,發現你需要採取稍微不同的方法。
在折角,動畫鏈接到狀態。因此,您不希望在HTML中爲動畫定義不同的觸發器,而是需要定義觸發器可以在組件類中監控的多個狀態。並非直接從方法觸發動畫,而是設置動畫鏈接到的對象的狀態。
因此,舉例來說,我可能在導入必要的模塊之後定義的組件裝飾以下。
@Component({
selector: 'app-some-animated',
templateUrl: './some.component.html',
styleUrls: ['./some-animated.component.scss'],
animations: [
trigger('flyInOut', [
transition("void => fly", [
animate(300, keyframes([
style({transform: 'translateX(100%)', opacity: 0}),
style({transform: 'translateX(0)', opacity: 1})
]))
]
)
]),
trigger('flyInOut', [
transition("void => fade", [
animate(300, keyframes([
style({opacity: 0}),
style({opacity: 1})
]))
]
)
])
]
})
在這個例子中,我一旦元素被實例化,動畫就會發生。在ngOnInit()方法中,我將this.watchMe設置爲「飛行」或「淡入淡出」。
在HTML我附加了flyInOut觸發像這樣:
<div [@flyInOut]="watchMe">
Some content...
</div>
你的情況,你可能想所需的狀態添加到您的領域對象或從你的* ngFor可迭代的條件。
This article從coursetro有一個很好的解釋和視頻了。
slideOut中的動畫狀態是什麼?你應該使用類似[@slideOut] =「」或類似的,其中STATE_NAME可動態確定(通過它返回一個名稱的方法EG)或靜態(如只是一個硬編碼字符串) –
danimal
我可以嘗試像那,現在slideOut是一個void => *動畫。 – Devcon
然後開始設置[@slideOut] =「'測試'」或類似的 - 你的動畫def中的*應該選取它! – danimal