当前位置: 首页 > 知识库问答 >
问题:

角度 ngIf 问题 - html 未呈现 - 数据存在

连时铭
2023-03-14

我在从API检索页面上显示的数据时遇到问题。

API 正在返回对象数组,所以我有多个 *ngIf 以便知道要显示的 html div。重要的是要说API不是每次都返回所有对象,这取决于数据。

问题是,在第一次调用 API 后,html 被正确呈现,所有内容都按预期显示。在第二次调用时(输入参数现在当然不同了),API 返回不同的数据(更多对象),但 HTML 是相同的,所以我在页面上缺少几个 div。如果我刷新页面并再次调用 API,我会得到呈现良好的 html。

console.log(this.data)总是显示正确的信息。

我试过用这个changeDetector。detectChanges()和this.ngZone。运行SO上的解决方案,但这并没有解决我的问题。

还有什么我可以尝试的吗?

这是我的代码示例:

this.repoService.getData(а, b)
 .subscribe(res => {
   this.data = res as ApiData;
})

对于每个对象,我有几个这样的假设

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>

共有1个答案

姚培
2023-03-14

我已经通过将逻辑移到html部分解决了这个问题。

我把这个换了

<div *ngIf="objectAExist">

有了这个

<div *ngIf="data.objectA.length > 0">

一切都如预期的那样运转。

 类似资料:
  • 只是一个简单的问题。 让我们将这段代码作为IE: 是 NgIf 内的内容呈现然后从页面中隐藏,还是角度“知道”此 div 不会显示,因此甚至不渲染其中的内容?

  • 我的问题涉及到*ngif指令,一旦*ngif=true我希望在我的'ModClass'指令可以做它的东西之前先渲染html内容。 我试图实现ngOnInit和ngViewInit,但没有运气,因为我相信ngOnInit触发器,而ngif内容正在渲染或可能更早时,父组件生成。 同样对于ngViewInit,我想我需要订阅一些东西,但我不知道我需要订阅什么。(我可能完全错了,我会做更多的研究) 下面的

  • 我想实现回收器视图布局,但我得到错误“呈现问题”。我尝试添加include,但错误仍然存在。我该如何解决问题呢? 错误:I

  • 我第一次接触JSF和JSF标记。xhtml不工作。我的网络。xml文件包含以下代码 我faces.config文件里的代码是 我已经尝试了很多选项,比如将URL映射更改为/faces/*和在Web INF/Lib中包含JAR,但没有用。。。正在寻求帮助。。。。谢谢

  • 我开始使用动画js,我想在我的Angular应用程序中包含一个动画。 在尝试这样做时,我发现当放置动画的< code>div依赖于指令< code>ngIf时,动画不起作用。当ngIf中的条件为真时,图像正确加载,但它没有动画。删除指令解决了这个问题,但我想有条件地展示它。 JS: CSS: HTML工作正常: 超文本标记语言没有动画: HTML也不工作: 我应该做些什么来使动画符合Angular

  • 我正在使用SceneForm1.16和andriod Studio4.1,我正在尝试渲染,但它不工作。 问题: 生成分级文件