Угловой : вызов API несколько раз параллельно выдает 500 статусов

#angular #typescript #api #httprequest

Вопрос:

У меня есть родительский компонент, который загружает дочерние компоненты на разных вкладках в соответствии с отсутствием вкладок.

мой код для HTML-файла родительского компонента выглядит следующим образом :

 <div class="card card-default">
    <div class="card-body">
        <p >Details</p>
        <tabset [justified]="true" class="ie-fix-flex">
            <tab *ngFor="let item of dNumbers">
                <ng-template tabHeading >{{ item.Number }}</ng-template >
                <div>
                    <app-details [Number]="item.Number"></app-details>
                </div>
            </tab>
        </tabset>
    </div>
</div>
 

мой дочерний компонент получает номер правильно и позволяет, если цикл выполняется 4 раза для 4 номеров сделок. Мой ngOnIt вызывает 4 раза, и, таким образом, он вызывает мой API 4 раза, что приводит к кодам ошибок.

  @Input('Number') Number;

ngOnInit(): void {
    this.Num = this.commonService.encryptData(this.Number, this.key, this.iv);
    this.getDetails();
  }

  async getDetails() {
    this.proService.getDetails(this.Num)
      .subscribe((data) => {
        this.detailData = data;
      })
  }
 

getDetails() метода proService вызывает мой API. Я не использовал никаких обещаний или асинхронного ожидания в своем API. Пожалуйста, подскажите, как я могу этого добиться.

Я хочу возвращать данные с каждого звонка. иногда он предоставляет данные на 1 вкладке или 2 вкладке, но не на всех вкладках. Он закончился статусом 500.

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

1. Вы также получаете какое-либо сообщение об ошибке? Это ваш сервер или это API, который вы используете у кого-то другого?

2. Нет, я просто получаю статус 500 для нескольких своих номеров. Также я использую чужой API, и у API нет проблем с запрошенными данными.

3. Я не уверен, как вы используете detailData переменную, но попробуйте использовать асинхронный канал, потому что angular позаботится о подписке и отмене подписки.

4. Вы можете создать службу, которая содержит состояние. Служба загружает данные из API один раз и сохраняет их, т. е. в объект поведения. Затем компоненты подписываются на этот объект поведения, а не непосредственно на вызов API.

5. Спасибо всем вам за ваши ценные предложения. Я пробовал эти способы, но, к сожалению, это не помогает.