Итак, у вас есть массив с динамическим размером, скажем: ["1", "2", "3", "4", "5"]
.
Что вы действительно хотите сделать, так это каким-то образом иметь массив, который содержит один или несколько массивов из N значений, таких как: [["1", "2", "3"], ["4", "5"]]
.
Для этого вы можете использовать этот фрагмент:
function groupArray<T>(data: Array<T>, n: number): Array<T[]> {
let group = new Array<T[]>();
for (let i = 0, j = 0; i < data.length; i++) {
if (i >= n && i % n === 0)
j++;
group[j] = group[j] || [];
group[j].push(data[i])
}
return group;
}
Теперь, чтобы использовать его, просто назовите его так:
var arrayOfData: string[] = ["1", "2", "3", "4", "5"];
var group = groupArray(arrayOfData, 3);
console.log(group); // displays: ["1", "2", "3"], ["4", "5"]
В angular теперь вы можете сделать *ngFor
для массива group
для построения строк, а затем еще один *ngFor
для построения столбцов.
Будьте внимательны при последнем рассмотрении массива, у вас может не быть правильной длины в зависимости от размера исходного массива. Вам нужно будет «заполнить» последний массив пустыми значениями или чем угодно.
Надеюсь, это поможет.