У меня есть угловое приложение с несколькими флажками, которое сохраняет значение на нашем сервере и работает по следующему методу
работает
change(event, featureId, featureName) {
let message = '';
of(event)
.pipe(
mergeMap(() => {
if (event.checked) {
message = `${featureName} feature was enabled.`;
return this.vendorsService.addFeatureToVendor(this.vendorId, featureId);
} else {
message = `${featureName} feature was disabled.`;
return this.vendorsService.deleteFeatureFromVendor(this.vendorId, featureId);
}
})
).subscribe(res => {
this.response = res;
this.snackBar.open(message, undefined,
{ duration: 2500, panelClass: 'style-success' } as MatSnackBarConfig);
},
err => this.resError = err);
}
Когда ядобавьте попытку и добавьте MatDialogConfig , чтобы попросить пользователя подтвердить свой выбор. Я получаю следующую ошибку и не могу ее выяснить.
Аргумент типа '() => void' нельзя назначить параметру типа '(значение: любое, индекс: число) => ObservableInput'. Тип 'void' нельзя назначить типу 'ObservableInput'.ts (2345)
Я вижу, что код ожидает, пока модальное окно не будет закрыто, прежде чем оно выполнит выбор, но я подумал, что это будетнет проблем, поскольку он по-прежнему возвращает те же действия, что и раньше.
Что я делаю неправильно?
Не работает
change(event, featureId, featureName) {
let message = '';
of(event)
.pipe(
mergeMap(() => {
const dialogConfig = new MatDialogConfig();
dialogConfig.disableClose = false;
dialogConfig.autoFocus = true;
dialogConfig.data = {
title: `${featureName ? 'Disallow' : 'Allow'}`
};
const component = ConfirmationModalComponent;
this.dialog.open(component, dialogConfig)
.afterClosed().subscribe((result) => {
if (result) {
message = `${featureName} feature was enabled.`;
return this.vendorsService.addFeatureToVendor(this.vendorId, featureId);
} else {
message = `${featureName} feature was disabled.`;
return this.vendorsService.deleteFeatureFromVendor(this.vendorId, featureId);
}
})
})
).subscribe(res => {
this.response = res;
this.snackBar.open(message, undefined,
{ duration: 2500, panelClass: 'style-success' } as MatSnackBarConfig);
},
err => this.resError = err);
}