лучший подход - добавить новое свойство в «item» (например, называемое «edit»), так что
<li *ngFor="let item of Array let i = index">
<span>
<label *ngIf="!item.editing" (dblclick)="item.editing=true;">
{{item.tag}}
</label>
<input *ngIf="item.editing" [(ngModel)]="item.tag" type="text" (blur)="item.editing=false" />
</span>
</li>
Смотрите несколько вещей:
1. - при щелчке метки переменная становится истинной, поэтому показывается вход
2. - при размытии элемента переменная становится ложной, поэтому отображается метка
3. - Используйте [(ngModel)] для связи между входом и значением