У меня есть угловое приложение, которое демонстрирует какое-то странное (для меня) поведение. У меня есть иконка в гармошке:
<ngb-accordion>
<ngb-panel *ngFor="let subspace of lab.subSpaces" #group>
<ng-template ngbPanelTitle>
{{ subspace.name }}
<button *ngIf="isLabManager" class="float-right"
style="margin-bottom: 0;margin-right: 10px;"
(click)="deleteSubSpace(subspace)">
<i class="fa fa-trash btn btn-danger"></i>
</button>
</ng-template>
Когда я нажимаю на этот значок, код deleteSubSpace
запускается, но в то же время страница перезагружается на домашнюю страницу углового приложения, и я не могу понять, почему. Код просто удаляет подпространство из списка:
deleteSubSpace(subspace: SubSpace): void {
const index = this.lab.subSpaces.findIndex(x => x.id == subspace.id);
if (index !== -1) {
this.lab.subSpaces.splice(index, 1);
}
}
Я понимаю, что удаление элемента из списка приведет к необходимости обновления этого подкомпонента, но если я сейчас нахожусь по URL-адресу / details / 1234, когда я удаляю элемент, почему страница перезагружается в / вместо / подробности / 1234?
Больше странностей. Если я введу этот код в ngOnInit
:
setTimeout(() => this.deleteSubSpace(this.lab.subSpaces[1]), 5000);
затем через 5 секунд после загрузки подпространства чисто уходит. Так что явно ничего плохого в методе удаления. Каким-то образом вызов этого метода из обработчика (click)
вызывает перезагрузку.