ブールプロパティにバインドされた遷移をトリガーしようとしていますが、これは起動しないようです。
ここに私のアニメーショントリガーのカットダウンバージョンがあります
trigger(
'trueFalseAnimation', [
transition('* => true', [
style({backgroundColor: '#00f7ad'}),
animate('2500ms', style({backgroundColor: '#fff'}))
]),
transition('* => false', [
style({backgroundColor: '#ff0000'}),
animate('2500ms', style({backgroundColor: '#fff'}))
])
]
)
HTML:
<div [@trueFalseAnimation]="model.someProperty">Content here</div>
テストする:
ngOnInit() {
setTimeout(() => {
this.model.someProperty = true;
setTimeOut(() => {
this.model.someProperty = false;
}, 5000);
}, 1000)
}
someProperty
が変更されると、トリガーは発生しません。
簡単なテストとして、文字列を使用するようにトリガーを変更しました。
trigger(
'trueFalseAnimation', [
transition('* => Success', [
style({backgroundColor: '#00f7ad'}),
animate('2500ms', style({backgroundColor: '#fff'}))
]),
transition('* => Failed', [
style({backgroundColor: '#ff0000'}),
animate('2500ms', style({backgroundColor: '#fff'}))
])
]
)
テストする:
ngOnInit() {
setTimeout(() => {
this.model.someProperty = "Success";
setTimeOut(() => {
this.model.someProperty = "Failed";
}, 5000);
}, 1000)
}
2番目の例は問題なく動作します
私の質問は
trigger('isVisibleChanged', [
state('true' , style({ opacity: 1, transform: 'scale(1.0)' })),
state('false', style({ opacity: 0, transform: 'scale(0.0)' })),
transition('1 => 0', animate('300ms')),
transition('0 => 1', animate('900ms'))
])
私は同じ問題を抱えています。ブール値がトリガーとしてサポートされているかどうかはわかりませんが、回避策は、ブール値を文字列として返すゲッターで文字列プロパティを定義することでした。このようなもの:
get somePropertyStr():string {
return this.someProperty.toString();
}
次に、アニメーションをそのsomePropertyStr
プロパティにバインドする必要があります。
繰り返しになりますが、これはworkい回避策であり、最善の方法はブール値を使用できることです。
状態は文字列であると定義されているため、それに固執する必要があります。
あなたのコードに基づいた最も簡単な-しかし最も厄介な方法はこれです
<div [@trueFalseAnimation]="model.someProperty?.toString()">Content here</div>
しかし、これはかなりひどいので、これはおそらくより良いです
<div [@trueFalseAnimation]="model.someProperty ? 'active' : 'inactive'">Content here</div>
<div [@trueFalseAnimation]="model.someProperty ? 'visible' : 'hidden'">Content here</div>
<div [@trueFalseAnimation]="model.someProperty ? 'up' : 'down'">Content here</div>
<div [@trueFalseAnimation]="model.someProperty ? 'left' : 'right'">Content here</div>
ここでの最善のアドバイスは、実際の意味に対応する状態を使用することです。とにかく、この文脈で真と偽はどういう意味ですか?
ブール値を変換するパイプを作成することを検討しましたが、その唯一の利点は、状態文字列と一貫性があることを確認することです。