Я думаю, что вы должны сделать что-то вроде этого, удалить параметр i из функции showLogin:
<div class="allCompanies" [@listAnimation]="empresas.lenght">
<div id="{{i}}" class="empresa" *ngFor="let comp of empresas; let i = index">
<div *ngIf="show" class="card" id="card">
<div class="row">
<div class="col-sm-8">
<p>
<strong>Name: </strong>{{comp.name}}</p>
<p>
<strong>Data: </strong>{{comp.data}}</p>
</div>
<div class="btnDiv col-sm-4">
<button class="btn login" (click)="showLogin($event)">Entrar</button>
</div>
</div>
</div>
</div>
</div>
В вашем контроллере установите классы для элементов, все .card для скрытия карты и родительского элемента для элемента, по которому щелкнули, для card-show:
showLogin = function (event) {
var target = event.target;
var pElement = target.parentElement.parentElement;
var pclassAttr = pElement.attributes.class;
var cardElems = angular.element( document.querySelector('.card'));
cardElems.addClass('card-hide');
pElement.classList.remove('card-hide');
pElement.classList.add('card-show');
}
Так что в вашем CSS-файле вы должны иметь эти селекторы, чтобы скрыть и показать соответственно. Надеюсь это работает.
Для получения дополнительной информации о методах добавления и удаления перейдите по этой ссылке