#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. Спасибо всем вам за ваши ценные предложения. Я пробовал эти способы, но, к сожалению, это не помогает.