Может быть, это работает, но я не уверен
<ng-container *ngFor="let p of relatedProperties; let i = index">
<div class="row" *ngIf="(i + 1) / 3 === 1">
<div class="col-md-6" *ngIf="relatedProperties[i - 2].title != null">{{ relatedProperties[i].title }}</div>
<div class="col-md-6" *ngIf="relatedProperties[i - 1].title != null">{{ relatedProperties[i].title }}</div>
<div class="col-md-6" *ngIf="relatedProperties[i].title != null">{{ relatedProperties[i].title }}</div>
</div>
</ng-container>
Кроме того, я должен сказать, что это довольно забавно, но если это то, что вы просите, это должно работать
edit:
Обратите внимание, что строгое значение null (a == null) лучше проверки на неопределенность (a === undefined), так как оно проверяет как неопределенное, так и нулевое значение. В вашем случае title != null
.
Кроме того, вы можете создать итерацию, которая будет содержать структуру, которую вы хотите, более чистым способом.
вместо [title1, title2, title3, title4, title5, title6...]
вы должны попытаться получить [[title1, title2, title3], [title4, title5, title6], ...], который намного чище и позволяет просто иметь два * ngFors внутри вашего шаблона
<element1 *ngFor="let innerArray of myArray; let i = index">
<element2 *ngFor="let title of innerAray; let j = index">
</element2>
</element1>
И, наконец, я предлагаю вамизбегайте вызова переменной 'p', это плохая практика.