У меня проблема с ngstyle в Angular.
Когда у меня есть условие, которому должен удовлетворять ngstyle, и он это делает, он либо меняет фон элемента html, либо нет, и это совершенно случайно.
бывший. для 122 он загрузит GIF один раз и не один раз, и это случайно
Процесс заключается в том, что сначала он рисует число из this.data, затем ngstyle проверяет условие, и если условие истинно, он должен изменить фон элемента html. Но, к сожалению, он иногда меняется и не меняется.
Процесс
for (var i = 1; i <= 10; i++) {
((index) => {
setTimeout(() => {
this.linia1 = this.data[Math.floor(Math.random() * (730 - (0)) + (0))];
}, i * 2000);
})(i);
<div class="jeden"
[style.background-image]="linia1 === 111 ? 'url(' + 'https://media.giphy.com/media/b5atZz6rAaMqbDVF3W/source.gif' + ')' : ''"
[style.background-image]="linia1 === 112 ? 'url(' + 'https://i.giphy.com/media/jwJZ8vjqnLjiks7dAC/source.gif' + ')' : ''"
[style.background-image]="linia1 === 113 ? 'url(' + 'https://i.giphy.com/media/Gopda0HEGY6RJDr65y/source.gif' + ')' : ''"
[ngStyle]="linia1 === 121 ? jdj : ''"
[ngStyle]="linia1 === 122 ? jdd : ''"
[ngStyle]="linia1 === 123 ? jdt : ''"
[ngStyle]="linia1 === 131 ? jtj : ''"
[ngStyle]="linia1 === 132 ? jtd : ''"
[ngStyle]="linia1 === 133 ? jtt : ''"
[ngStyle]="linia1 === 211 ? djj : ''"
[ngStyle]="linia1 === 212 ? djd : ''"
[ngStyle]="linia1 === 213 ? djt : ''"
[ngStyle]="linia1 === 221 ? ddj : ''"
[ngStyle]="linia1 === 222 ? ddd : ''"
[ngStyle]="linia1 === 223 ? ddt : ''"
[ngStyle]="linia1 === 231 ? dtj : ''"
[ngStyle]="linia1 === 232 ? dtd : ''"
[ngStyle]="linia1 === 233 ? dtt : ''"
[ngStyle]="linia1 === 311 ? tjj : ''"
[ngStyle]="linia1 === 312 ? tjd : ''"
[ngStyle]="linia1 === 313 ? tjt : ''"
[ngStyle]="linia1 === 321 ? tdj : ''"
[ngStyle]="linia1 === 322 ? tdd : ''"
[ngStyle]="linia1 === 323 ? tdt : ''"
[ngStyle]="linia1 === 331 ? ttj : ''"
[ngStyle]="linia1 === 332 ? ttd : ''"
[ngStyle]="linia1 === 333 ? ttt : ''"
>
{{ linia1 }}
jdj = {
'background-image': 'url(https://i.giphy.com/media/TOEgHDjU4oLD1AUNWa/source.gif)'
}
jdd = {
'background-image': 'url(https://i.giphy.com/media/yddWabBy6HKG8Wxi0O/source.gif)'
}
jdt = {
'background-image': 'url(https://i.giphy.com/media/zdhOoGiuloks7xxalu/source.gif)'
}
jtj = {
'background-image': 'url(https://i.giphy.com/media/kCDUsh9GhECrPj6uge/source.gif)'
}
jtd = {
'background-image': 'url(https://i.giphy.com/media/rcXJxA8Z5uoi3xMlVy/source.gif)'
}
jtt = {
'background-image': 'url(https://i.giphy.com/media/LfUskQxIwRFX6BIgCx/source.gif)'
}
djj = {
'background-image': 'url(https://i.giphy.com/media/0oVDtqpjJkg6JolXBN/source.gif)'
}
Я показал два способа решения этой проблемы, но они работают одинаково.
Например, я рисую 10 гифок, а он отобразит только 4, а следующий розыгрыш 5. Я знаю, что это решение, вероятно, неоптимальное, но я так устроил.