Angular ngIf 问题 - html 未呈现 - 数据存在
Angular ngIf problem - html not rendered - data exist
我在从 API.
检索数据后显示在我的页面上时遇到问题
API 正在返回对象数组,所以我有多个 *ngIf,以便知道要显示什么 html div。重要的是说 API 并不是每次都返回所有对象,这取决于数据。
问题是,在第一次调用 API 后,html 会正确呈现,并且所有内容都会按应有的方式显示。在第二次调用时(输入参数现在当然不同了),API 返回不同的数据(更多对象),但是 HTML 是相同的,所以我缺少几个 div在页面上。如果我刷新页面并再次调用 API,我会得到很好的呈现 html.
console.log(this.data) 总是显示正确的信息。
我尝试使用在 SO 上找到的 this.changeDetector.detectChanges() 和 this.ngZone.run 解决方案,但这并没有解决我的问题。
还有什么我可以尝试的吗?
这是我的代码示例:
this.repoService.getData(а, b)
.subscribe(res => {
this.data = res as ApiData;
})
而且我有几个这样的 if,对于每个对象
if (this.data.objectA === undefined || this.data.objectA.length === 0) {
this.objectAExist = false;
}
export interface ApiData {
objectA: aData[];
objectB: bData[];
objectC: cData[];
objectD: dData[];
我也有几个 div 这样的 ngIf 和 ngFor。
<div *ngIf="objectAExist">
<div *ngFor="let item of data.objectA">
<div>
<p>Label 1</p>
<p>Label 2</p>
<p>Label 3</p>
</div>
<div>
<p>{{ item.Id }}</p>
<p>{{ item.Name }}</p>
<p>{{ item.Description }}</p>
</div>
</div>
</div>
我已通过将逻辑移至 html 部分来解决此问题。
我替换了这个
<div *ngIf="objectAExist">
有了这个
<div *ngIf="data.objectA.length > 0">
一切正常。
我在从 API.
检索数据后显示在我的页面上时遇到问题API 正在返回对象数组,所以我有多个 *ngIf,以便知道要显示什么 html div。重要的是说 API 并不是每次都返回所有对象,这取决于数据。
问题是,在第一次调用 API 后,html 会正确呈现,并且所有内容都会按应有的方式显示。在第二次调用时(输入参数现在当然不同了),API 返回不同的数据(更多对象),但是 HTML 是相同的,所以我缺少几个 div在页面上。如果我刷新页面并再次调用 API,我会得到很好的呈现 html.
console.log(this.data) 总是显示正确的信息。
我尝试使用在 SO 上找到的 this.changeDetector.detectChanges() 和 this.ngZone.run 解决方案,但这并没有解决我的问题。
还有什么我可以尝试的吗?
这是我的代码示例:
this.repoService.getData(а, b)
.subscribe(res => {
this.data = res as ApiData;
})
而且我有几个这样的 if,对于每个对象
if (this.data.objectA === undefined || this.data.objectA.length === 0) {
this.objectAExist = false;
}
export interface ApiData {
objectA: aData[];
objectB: bData[];
objectC: cData[];
objectD: dData[];
我也有几个 div 这样的 ngIf 和 ngFor。
<div *ngIf="objectAExist">
<div *ngFor="let item of data.objectA">
<div>
<p>Label 1</p>
<p>Label 2</p>
<p>Label 3</p>
</div>
<div>
<p>{{ item.Id }}</p>
<p>{{ item.Name }}</p>
<p>{{ item.Description }}</p>
</div>
</div>
</div>
我已通过将逻辑移至 html 部分来解决此问题。
我替换了这个
<div *ngIf="objectAExist">
有了这个
<div *ngIf="data.objectA.length > 0">
一切正常。