Во-первых, ваш код очень грязный, у вас есть let fix = ...['data'][i]
, затем строка после того, как у вас есть this.fix = ...['data']
, а затем никогда не используйте переменную fix
.То же самое с вашей lined
переменной.Кроме того, вы устанавливаете каждый this.fix
на 0-й элемент вашего json, что, я думаю, неправильно.Вы хотите использовать локальные переменные fix
и lined
или использовать массивы this.fix
и this.lined
, потому что они являются двумя отдельными переменными.Тогда у вас есть переменная this.note
, которая представляет собой одну переменную, а не массив, поэтому вы получаете одну заметку в HTML.
Ваша большая проблема в том, что у вас есть переменные типа this.fix
и this.note
, которые не являются массивами, они представляют собой один объект.Затем, когда вы используете *ngFor
, вы зацикливаете один объект, который будет заполнен с момента последнего запуска цикла for
в вашей машинописи.На вашем месте я бы попробовал что-то вроде этого:
ts
lined: Array<any> = [];
fix: Array<any> = [];
cards: Array<any> = [];
note: Array<any> = [];
this.http.get(url).subscribe(result => {
this.lineup = result.json();
this.lineup = Array.of(this.lineup);
for(let i = 0; i < this.lineup['0']['data'].latest['data'].length; i++) {
this.fix[i] = this.lineup['i']['data'].latest['data'];
this.fix[i].sort(function (a, b) {
a = new Date(a.time.starting_at.date);
b = new Date(b.time.starting_at.date);
return a<b ? 1 : a>b ? -1 : 0;
});
this.lined[i] = this.fix[i].lineup['data'];
this.lined[i] = this.lined[i].filter(lined => lined.player_id === 580);
this.cards = this.lined[i]['0'];
if(this.cards != undefined) {
this.note[i] = 5;
console.log("first",this.note);
this.note[i] = this.note[i] + (0.8 * this.cards.stats.goals.scored);
this.note[i] = this.note[i] - (0.4 * this.cards.stats.goals.conceded);
this.note[i] = this.note[i] + (0.1 * this.cards.stats.shots.shots_total);
this.note[i] = this.note[i] + (0.2 * this.cards.stats.shots.shots_on_goal);
this.note[i] = this.note[i] + (0.1 * this.cards.stats.fouls.drawn);
this.note[i] = this.note[i] - (0.4 * this.cards.stats.fouls.committed);
this.note[i] = this.note[i] - (0.4 * this.cards.stats.cards.yellowcards);
this.note[i] = this.note[i] - (3 * this.cards.stats.cards.redcards);
this.note[i] = this.note[i] + (0.2 * this.cards.stats.passing.crosses_accuracy);
this.note[i] = this.note[i] + (0.01 * this.cards.stats.passing.passes);
if (this.cards.stats.passing.passes_accuracy > 80) {
this.note[i] = this.note[i] + (0.5);
} else {
this.note[i] = this.note[i] - (0.5);
}
this.note[i] = this.note[i] + (0.4 * this.cards.stats.other.assists);
this.note[i] = this.note[i] - (0.3 * this.cards.stats.other.offsides);
this.note[i] = this.note[i] + (0.01 * this.cards.stats.passing.passes);
this.note[i] = this.note[i] + (1 * this.cards.stats.other.saves);
this.note[i] = this.note[i] + (2 * this.cards.stats.other.pen_saved);
this.note[i] = this.note[i] - (1.5 * this.cards.stats.other.pen_missed);
this.note[i] = this.note[i] - (1 * this.cards.stats.other.pen_committed);
this.note[i] = this.note[i] + (0.3 * this.cards.stats.other.hit_woodwork);
this.note[i] = this.note[i] + (0.3 * this.cards.stats.other.tackles);
this.note[i] = this.note[i] + (0.3 * this.cards.stats.other.blocks);
this.note[i] = this.note[i] + (0.4 * this.cards.stats.other.interceptions);
this.note[i] = this.note[i] + (0.1 * this.cards.stats.other.clearances);
console.log('note finale', this.note)
}
});
html
<ion-col *ngFor="let event of fix; let i = index" col-6 style=" font-size: 19px;padding: 3px;vertical-align:middle;color:#4B4B4B;text-align: left; padding-left:5%;">
{{event.localTeam.data.name}} - {{note[i]}}
</ion-col>
Если это не сработает, очистите ваш код, избавьтесь от лишних переменных, попробуйте выполнить простой *ngFor
, а затем соберите все переменные и спросите снова.