Para mim o no-gutters não estava funcionando, e a solução do Jonas, de colocar w-100 na tag img também não funcionou... Então depurando vi que o problema era um padding de 12 aplicado em ap-photo - então coloquei nele a classe px-0, que retira o padding dos lados, e funcionou:
<ap-photo *ngFor="let photo of row" class="col-4 px-0"
[url]="photo.url"
[description]="photo.description">
</ap-photo>