A primeira vez que a lista de photos é carregada, ocorre um erro no console. Para contornar isso coloquei apenas um verificador para saber se a lista realmente existe.
Um outro ponto seria, se irei popular uma lista de rows com 3 photos, não necessito percorrer todo o array de photos, por isso, altero o index após adicionar 3 photos na lista. Isso é bom para não duplicar itens e também diminui a quantidade de iterações, tendo um retorno mais rápido, principalmente em um array muito grande.
groupColumns(photos: Photo[]) {
const newRows = [];
if (photos) {
for (let index = 0; index < photos.length; index++) {
newRows.push(photos.slice(index, index + 3));
index += 3;
}
}
return newRows;
}