Почему при нажатии на иконку перезагрузить угловую страницу - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть угловое приложение, которое демонстрирует какое-то странное (для меня) поведение. У меня есть иконка в гармошке:

    <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) вызывает перезагрузку.

...