У меня был похожий requiremrnt, и я использовал Componetn для достижения этой цели.
Попробуйте следовать за этим.
1. Создайте компонент с помощью кнопки
<div nxRow *ngIf="editMode">
<div nxCol="12,12,6">
<button nxButton='secondary' (click)='save()'>save</button>
</div>
<div nxCol="12,12,6">
<button nxButton='secondary' (click)='cancel()'>cancel</button>
</div>
</div>
<div nxRow *ngIf="!editMode">
<div nxCol="12,12,12">
<button nxButton='secondary' (click)='edit()'>edit</button>
</div>
</div>
TS:
import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
@Component({
// tslint:disable-next-line: component-selector
selector: 'az-save-edit-button',
templateUrl: './save-edit-button.component.html',
styleUrls: ['./save-edit-button.component.css']
})
export class SaveEditButtonComponent implements OnInit {
@Input() divId = null;
@Output() btnClick = new EventEmitter();
editMode = false;
constructor() { }
ngOnInit() {
}
save() {
this.editMode = false;
this.btnClick.emit({divId: this.divId, action: 'save'});
}
edit() {
this.editMode = true;
this.btnClick.emit({divId: this.divId, action: 'edit'});
}
cancel() {
this.editMode = false;
this.btnClick.emit({divId: this.divId, action: 'cancel'});
}
}
2. создать динамически из родительского компонента (передать свой идентификатор)
<az-save-edit-button [divId]="3" (btnClick)="functionCall($event)"></az-save-edit-button>
при клике вы получите идентификатор кнопки. Измените это в соответствии с вашими требованиями