Попробуйте установить новое свойство для каждого объекта в массиве myLinkBody, чтобы сохранить текущее состояние независимо от того, редактируется он или нет.
myLinkBody.map(body => { body.currentState="edit"; return body});
и использовать дополнительное поле ввода тега, используя [(ngModel)]
.Use [hidden]
как для тега achor, так и для тега ввода, показать и скрыть их в зависимости от текущего состояния.
<span *ngFor="let body of myLinkBody;let last=last;let i=index" class="myLinkBody" [class.myLinkBodyLast]="last">
<a [href]="domainURL+body.href" [hidden]="body.currentState=='save'">{{body.value}}</a>
<input type="text" [(ngModel)]="myLinkBody[i].name" [hidden]="body.currentState=='save'"/>
<button (click)="edit($event,body,index)">{{body.currentState}}</button>
<div id="deleteLinkButton"></div>
</span>
В функции редактирования
edit(event,body,index){
if(body.state == 'save')
this.myLinkBody[index].state='edit';
else
this.myLinkBody[index].state='save';
.....your code here
}
Пример стекаблица: https://stackblitz.com/edit/angular-5hrmfv