Вызов службы удаления не работает в Angular - PullRequest
0 голосов
/ 18 февраля 2020

Файл ListStore.ts

export class ListstoreComponent implements OnInit {
  rawlist;
  name = '';
  id = '';
  storeid = "";
  store: Store;

  constructor(private api: APIService, private router: Router, private route: ActivatedRoute, private cookieService: CookieService) { }

  ngOnInit() {
    this.storelist();

  }

  //store list
  async storelist() {
    this.rawlist = await this.api.ListStores();
    this.storelist = this.rawlist.items;
  }
  //delete list
  async deleteStore(id) {
  if (window.confirm('Are you sure, you want to delete?')){
    await this.api.DeleteStore(id).catch(data => {
      this.rawlist();
    })
  }
} 

HTML Файл

 <button type="button" class="btn btn-primary btn-gap" (click)="deleteStore(Store.id)">Close Ticket</button>

Я удаляю список и обновляю базу данных , Но я не совсем уверен, сработает ли catch () или нет. Я пытался подписаться, но не работал

1 Ответ

0 голосов
/ 18 февраля 2020

Ваш обработчик событий должен обрабатывать асинхронный c характер вызова, а не пропускать его до HTML.

deleteStore(id): void {
  if (!window.confirm('Are you sure, you want to delete?')){
    return;
  }

  this.api.DeleteStore(id).then(message => {
    // handle response
  });
}

Редактировать:

Вы можете обработать его в HTML, но вам придется вернуть обещание от вашего обработчика событий, и вы получите больше кода HTML, чем должно быть.

Если вы действительно хотите использовать синтаксис async await, следующий код будет эквивалентен:

async deleteStore(id): void {
  if (!window.confirm('Are you sure, you want to delete?')){
    return;
  }

  const message = await this.api.DeleteStore(id);
  // handle response
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...