。HTML文件
<span class="total">Available Vaccines:</span>
{{ vaccinationData?.sessions[0]?.center_id}} // This displays data on html with //ctx.vaccinationData.sessions is undefined
<ng-container *ngFor="let data of vaccinationData.sessions" > <!-- This does not loop -->
<mat-card class="card">
<mat-card-header>
<!-- <mat-card-title>{{ data?.center_id }}</mat-card-title>
<mat-card-subtitle>{{ data?.address }}</mat-card-subtitle> -->
</mat-card-header>
</mat-card>
</div>
</ng-container>
.ts文件
import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';
import { ServicesComponent } from '../../models/services/services.component';
@Component({
selector: 'vaccine-available-slot-view',
templateUrl: './available-slot-view.component.html',
styleUrls: ['./available-slot-view.component.scss'],
/* changeDetection: ChangeDetectionStrategy.OnPush, */
})
export class AvailableSlotViewComponent {
constructor(private apiData: ServicesComponent){
this.apiData.getVaccineData().subscribe(data=>{
console.warn(data);
this.vaccinationData=data;
console.warn(this.vaccinationData?.sessions);
})
}
vaccinationData: any =[];
}
Api数据https://cdn-api.co-vin.in/api/v2/appointment/sessions/public/findByDistrict?district_id=141&日期=2021年7月5日
假设您从API接收的数据结构与您在HTML中编写的数据结构匹配,请记住,以异步方式调用API需要一些时间。
在API的数据可用之前,vaccinationData
属性设置为[]
,即:
- 与HTML期望的正常工作不匹配
- 甚至不是正确的类型,这可能是
{}
(空对象(或null
您应该:
- 使用Typescript正确键入数据,但将变量定义为
any
会破坏整个目的 - 在HTML中,添加
*ngIf
以仅在数据可用时显示块(直接使用数据作为条件或附加布尔标志(