Диалоговое окно Angular 6 и Angular material не открывается после успешного добавления в базу данных внутри метода подписки - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь открыть компонент диалога углового материала после успешной вставки в базу данных:

addHousehold(){
    let last_name_ar = this.formGroup.controls['last_name_ar'].value;

    let last_name_en = this.formGroup.controls['last_name_en'].value;
    .......//Other data
    let arrayOfLegalProtection = this.arrayOfLegalProtection;

    this.showSpinner = true;
    this.auth.addHousehold(this.unit_id,
      ...//Other data
      this.user_id
      ).subscribe(
      (data)=>{
        console.log(data);
        if(data=="enableAdd")
        {
          this.showSpinner = false;
          this.enableDisableAdd = "enableAdd";
          this.formGroup.reset();
          this.arrayOfLegalProtection = [];
          // this.openDialog(data);
          this.openDialog();
        }
        else
        {
          this.showSpinner = true;
          this.enableDisableAdd = "disableAdd";
          this.formGroup.reset();
        }
      },
      (error)=>{
        console.log(error);
      }
    )
}

Как видите, я добавил следующую строку в (data) часть subscribe()Метод:

this.openDialog();

openDialog() имеет следующий код:

openDialog(): void {
    const dialogRef = this.dialog.open(AddIndividualComponent, {
      width: '250px',
      data: {unit_id: this.unit_id}
    });

    dialogRef.afterClosed().subscribe(result => {
      console.log('The dialog was closed');

    });
}

Если вставка в базу данных прошла успешно, диалоговое окно не открывается, и в окне не отображаются ошибки.console.

Когда я перемещаю this.openDialog() за пределы метода подписки, диалоговое окно открывается нормально.

Я даже пытался объявить функцию с нуля внутри подписки (), но получил ошибкуговоря, не могу найти openDialog().

Как открыть диалоговое окно углового материала после добавления в базу данных и получить успешный ответ?

1 Ответ

0 голосов
/ 21 сентября 2018

Единственная причина, по которой диалоговое окно не отображается, состоит в том, что указанное ниже условие не выполняется, и, следовательно, функция openDialog () не вызывается.Пожалуйста, проверьте это.

if(data=="enableAdd") //not true
...