Я использую пакет ng-select с Angular 8 для добавления тегов к сообщениям. Мне нужно создать новые теги по запросу пользователя. Вот пример документации:
addTagPromise(name) {
return new Promise((resolve) => {
this.loading = true;
// Simulate backend call.
setTimeout(() => {
resolve({ id: 5, name: name, valid: true });
this.loading = false;
}, 1000);
})
}
https://stackblitz.com/run?file=src / tags-backend-example.component. html
Этот код добавляет новый тег после одного второе и все работает. Но мне нужен настоящий запрос на стороне сервера. Проблема в том, что когда я добавляю запрос HttpClient, он ничего не выполняет вообще!
Например, в этом коде запрос 'get' никогда не будет выполнен, а Promise никогда не разрешится!:
addTagPromise(name) {
return new Promise(resolve => {
this.http.get("http://google.com").subscribe(); <--- Will never executed
this.loading = true;
// Simulate backend call.
setTimeout(() => {
resolve({ id: 5, name: name, valid: true }); <--- Never resolves
this.loading = false;
}, 1000);
});
}
https://stackblitz.com/edit/angular-wxb5r6?file=src%2Ftags-backend-example.component.ts
И мой окончательный код выглядит примерно так:
addTag(title: string) {
const newLabel: CategorySet = { type: 'message', title };
return new Promise((resolve, reject) => {
this.categoryService.add(newLabel).subscribe(res => {
if (res.code === 1) {
// If added, get the list og gategories again
this.getCategoryList();
resolve();
} else {
this.toastr.error(res.message);
reject();
}
});
}