Проверьте, существуют ли данные в таблице угловой

#angular

Вопрос:

У меня есть эта функция :

   onSubmit() {
     this.http.getDataFromServer('api/all').subscribe(resp => {
       console.log(resp.data)
    })

    this.http.postDataToServer('api/in', this.companyForm.value).subscribe(() => {
      //show that organization is added in dialog
      this.dialog.open(DisplayPopupComponent, {
        data: {
          title: "Organization Updated Successfully!"
        }
      });
    })
  }
 

У нас есть данные resp.data , я хочу использовать эти данные из этого запроса, чтобы проверить, равно нулю или нет, для реализации второго запроса.

График :

соотв.данные — — — — — > существуют данные? затем примените второй запрос (api/in).

       -----> NULL data do nothing.
 

Комментарии:

1. Вы можете назвать свою вторую подписку в своей подписке на первую. Или используйте операторы RXJS , такие как pipe и map для достижения этого результата

2. Как я это делаю в своем примере? @DTul

Ответ №1:

Я думаю, вам нужно использовать switchMap .

Вот пример:

   onSubmit() {
    this.http.getDataFromServer('api/all').pipe(
      switchMap(resp => {
        if (resp.data) {
          return this.http.postDataToServer('api/in', this.companyForm.value);
        }
      })
    ).subscribe(() => {
      //show that organization is added in dialog
      this.dialog.open(DisplayPopupComponent, {
        data: {
          title: "Organization Updated Successfully!"
        }
      });
    });
  } 

Комментарии:

1. Другой вопрос, если я хочу получить «идентификатор» из соответствующих данных, обратите внимание, что данные, возвращаемые json, включают «идентификатор», для использования в другом методе в том же компоненте.ts, как это сделать ? @oz1985oz

2. Вы можете использовать tap метод. Например, вы можете добавить строку перед switchMap : tap(resp => this.id = resp.data.id),

Ответ №2:

Попробуйте сделать вот так:

    onSubmit() {
         this.http.getDataFromServer('api/all').subscribe(resp => {
           console.log(resp.data)
           this.someVariablename = resp.data
        });

        if(this.someVariablename == null) {
         //do nothing
        }else{
          //do something
        this.http.postDataToServer('api/in', this.companyForm.value).subscribe(() => {
          //show that organization is added in dialog
          this.dialog.open(DisplayPopupComponent, {
            data: {
              title: "Organization Updated Successfully!"
            }
          });
        })
      }
}
 

Комментарии:

1. Не работает неопределенное это.someVariablename. @Кишан

Ответ №3:

Вы можете создать функцию для postDataToServer и вызвать ее, если доступны соответствующие данные.

напр.

  onSubmit() {
         this.http.getDataFromServer('api/all').subscribe(resp => {
           if(resp.data){
            this.postDataToServer();
    }
        })
    
    
       postDataToServer(){
    this.http.postDataToServer('api/in', this.companyForm.value).subscribe(() => {
          //show that organization is added in dialog
          this.dialog.open(DisplayPopupComponent, {
            data: {
              title: "Organization Updated Successfully!"
            }
          });
        })
    
    }