Я не знаю, как сформулировать свой вопрос, потому что я довольно новичок в разработке ионных и гибридных приложений в целом, но я буду стараться изо всех сил. Я работаю над приложением и хочу открыть поле ion-select
, нажав на другую кнопку.
Это несколько работает, но не удаляет нужную запись, если нажатая запись не первая.
Мой HTML-код выглядит так:
account.page.html
<div class="account-drop-wrapper" *ngFor="let item of myDrops">
<div class="account-item">
<div class="account-content" [routerLink]="['/drop', item.id]">
<div class="text-content">
{{ item.description }}
</div>
<div class="drop-score">
<ion-progress-bar color="primary" value="0.5"></ion-progress-bar>
<p>{{ item.score }}</p>
</div>
</div>
<ion-item class="more-button">
<ion-icon name="more" class="edit-icon" (click)="openSelect()"></ion-icon>
<ion-select class="select-field" interface="action-sheet" (ionChange)="showMore(item, $event)" #showSelect>
<ion-select-option value="delete">Löschen</ion-select-option>
<ion-select-option value="edit">Bearbeiten</ion-select-option>
</ion-select>
</ion-item>
</div>
</div>
и это пока мой TypeScript:
account.page.ts
import { Component, OnInit, ViewChild } from '@angular/core';
import { DropService } from '../../services/drop.service';
import { Events, IonSelect, NavController } from '@ionic/angular';
import { AlertController } from '@ionic/angular';
@Component({
selector: 'app-account',
templateUrl: './account.page.html',
styleUrls: ['./account.page.scss'],
})
export class AccountPage implements OnInit {
allDrops: Drop[];
myDrops: Drop[];
@ViewChild('showSelect') selectRef: IonSelect;
openSelect() {
this.selectRef.open();
}
constructor(private dropService: DropService,
public navCtrl: NavController,
public events: Events,
public alertController: AlertController) { }
ngOnInit() {
this.dropService.getDrops().subscribe(res => {
this.allDrops = res;
});
this.dropService.getMyDrops().subscribe(res => {
this.myDrops = res;
});
}
showMore(item, event) {
if (event.detail.value === 'delete') {
this.confirmDelete(item);
}
}
async confirmDelete(item) {
const alert = await this.alertController.create({
header: 'Confirm',
message: 'delete?',
buttons: [
{
text: 'cancel',
role: 'cancel',
cssClass: 'secondary'
}, {
text: 'delete',
handler: () => {
this.dropService.removeDrop(item.id);
}
}
]
});
await alert.present();
}
}
Я думаю, мне нужно сделать каждый ion-select
уникальным, примерно так:
<ion-select (ionChange)="showMore(item, $event)" #showSelect{{item.id}}>
Но, к сожалению, я не знаю правильный синтаксис для достижения этого ... Кто-нибудь может мне помочь или исправить меня, если я ошибаюсь в своих предположениях?