Когда я добавляю MatDialogConfig () к моей подписке, я получаю ошибку "Type 'void' not assignable", и я не знаю, почему - PullRequest
0 голосов
/ 04 октября 2019

У меня есть угловое приложение с несколькими флажками, которое сохраняет значение на нашем сервере и работает по следующему методу

работает

  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);
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...