首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Angular中,使用*ngFor In *ngIf不起作用

在Angular中,ngFor和ngIf是两个常用的指令,用于循环和条件渲染。如果在使用过程中发现它们不起作用,可能有以下几个原因:

  1. 错误的语法:确保在使用ngFor和ngIf时,语法是正确的。ngFor应该用在一个带有循环的元素上,例如一个ul或者ng-container元素。ngIf应该用在一个带有条件判断的元素上,例如一个div或者ng-container元素。另外,注意在使用*ngFor时,需要使用let关键字来声明循环变量。
  2. 数据源问题:确保你的数据源是正确的,并且包含了需要循环或者条件渲染的数据。可以在组件中使用console.log()来打印数据源,以确保数据是正确的。
  3. 变量作用域问题:确保你的循环变量或者条件判断的变量是在正确的作用域内。有时候,变量的作用域可能会导致ngFor或者ngIf不起作用。
  4. 异步数据加载问题:如果你的数据是通过异步方式加载的,可能会导致ngFor或者ngIf不起作用。在这种情况下,可以使用异步管道(async pipe)来处理异步数据加载的问题。
  5. 其他可能的问题:如果以上几个原因都不是问题所在,那么可能是其他一些原因导致ngFor或者ngIf不起作用。可以尝试在浏览器的开发者工具中查看控制台是否有报错信息,或者在组件中添加一些调试代码来定位问题所在。

总结起来,当在Angular中使用ngFor和ngIf时,需要确保语法正确、数据源正确、变量作用域正确,并注意处理异步数据加载的情况。如果问题仍然存在,可以进一步排查其他可能的原因。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

AngularDart 4.0 高级-结构指令 顶

三种常见的内置结构指令 - NgIf,NgFor和NgSwitch ... - 在模板语法指南中进行了描述,并在整个Angular文档中的示例中进行了介绍。...您可以在分配给ngFor的字符串中启用这些功能,这是您在Angular的microsyntax中编写的。...当你编写自己的结构指令时,可以使用这些微观语法机制。 研究NgIf和NgFor的源代码是了解更多信息的好方法。 模板输入变量 模板输入变量是一个变量,其值可以在模板的单个实例中引用。...满足Angular模板中的类似需求。 编写一个结构指令 在本节中,您将编写一个与NgIf相反的UnlessDirective结构指令。 NgIf在条件为true时显示模板内容。...在没有合适的宿主元素时使用作为分组元素。 Angular将星号(*)语法解析为。 NgIf,NgFor和NgSwitch内置指令如何工作。

16.1K20
  • Angular2 之 结构型指令几个概念

    移除元素组件 利 把ngIf设置为false,将会影响到组件的资源消耗。angular会从DOM中移除该元素,停止相关组件的变更检测,把它从DOM事件中移除,并且销毁组件。...总结 基于上面的利弊分析,无论是我们在使用内置的指令还是使用自定的指令的时候,我们应该自己分析提添加、移除元素以及创建和销毁组件的后果。...标签 结构型指令,比如ngIf,使用HTML 5的template标签 完成它们的“魔法”。 控制Template标签内DOM添加与显示,在模板级别使用的。...在Angular应用之外,标签的默认CSS属性display是none 。 它的内容存在于一个隐藏的文档片段中。...要么显示的包含在Template标签中,要么隐式的使用*这种语法糖去包装在Template标签中。它简化了ngIf和ngFor —— 无论是写还是读。

    3K20

    Angular 中结构指令模式 - 它们是什么且怎么使用

    在 Angular 中,有两种类型的指令。属性指令修改 DOM 元素的外观或者行为。结构指令添加或者移除 DOM 元素。 结构指令是 Angular 中最强大的特性之一,然而它们却频繁被误解。...在 Angular 中,有三种标准的结构化指令。...要使用结构指令,我们需要在 HTML 模版中添加一个带有指令的元素。然后根据我们在指令中设置的条件或者表达式添加、删除或者替换元素。 结构指令的例子 我们添加些简单的 HTML 代码。...directive with the else clause 怎么使用 *ngFor 指令 我们使用 *ngFor 指令来遍历数组。...Angular 中我们什么时候需要用结构指令呢? 如果你想在 DOM 中添加或者移除一个元素的时候,你就应该使用结构指令。 当然,我们还可以使用它们来更改元素 CSS 样式,或者添加事件监听器。

    3.8K20

    过渡到 Angular 17 的新控制流语法

    传统指令与Angular 17的控制流语法对比让我们使用一些示例来比较传统指令和Angular 17的控制流语法:*ngIf指令 vs @if控制块Before(传统 *ngIf):ngIf.../src/component-to-be-migrated转义 {、} 和 @ 字符:在模板中,现有的 {、} 和 @ 字符作为文本字符使用时需要进行转义。...手动细化:手动优化复杂模板,以最佳方式使用新语法。例如,在某些情况下,您可以使用 @defer 块来延迟加载内容。向后兼容性和性能Angular 17允许您在应用程序中同时使用新旧语法。...结论Angular 17引入的新控制流语法在处理Angular应用程序中的模板和渲染逻辑方面带来了显著的改进。转换到这种新语法,承诺会使我们的代码更易读、易维护和高性能。...正如我们在自己的项目中所经历的,这些变化不仅是外观上的改变,而且是功能上的改变,提升了我们使用Angular的方式。我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

    72620

    Angular 显示英雄列表

    *ngFor 列出这些英雄 打开 HeroesComponent 的模板文件,并做如下修改: 在顶部添加  然后添加表示无序列表的 HTML 元素() 在  中插入一个 Angular 会把所点击的  上的 hero 对象传给它,这个 hero 也就是前面在 *ngFor 表达式中定义的那个。...英雄们显示在列表中,并且所点英雄的详情也显示在了页面的下方。 修复 - 使用 *ngIf 来隐藏空白的细节 该组件应该只有当 selectedHero 存在时才显示所选英雄的详情。...把显示英雄详情的 HTML 包裹在一个  中。 并且为这个 div 添加 Angular 的 *ngIf 指令,把它的值设置为 selectedHero。...你使用 *ngFor 显示了一个列表。 你使用 *ngIf 来根据条件包含或排除了一段 HTML。 你可以用 class 绑定来切换 CSS 的样式类。

    4.4K70

    angular知识点梳理第二篇-基本语法

    文章目录 前文回顾 基本语法 常见指令 NgModel NgFor NgIf Ng-container 管道 前文回顾 前面已经写了关于angular项目的基本介绍和如何创建一个angular项目,这一篇主要梳理一些...angular的基本语法,这样有利于后面我们进行梳理别的知识点做一些铺垫 基本语法 常见指令 NgModel NgModel就和vue中的v-model的效果是一致的,只是写法会有一些区别,vue中是可以直接进行使用的...,但是在angular中我们引入框架的一个核心模块FormsModule才可以,该指令就是将数据驱动视图的改变!...在app.modules.ts中引入forms模块 // 核心模块 import { NgModule } from '@angular/core'; //引入forms模块实现数据的双向绑定 import...-- 使用{{}}进行数据的获取 --> {{inputData}} 运行效果 NgFor NgFor和我们js中的for循环渲染数据是一致的,所以这里是比较容易理解的,简单的演示一下

    2.6K30

    Angular核心概念:数据绑定

    循环绑定:ngFor ngFor=“let 临时变量 of 数据”> ngFor=“let 临时变量 of 数据;let i= index”> ngFor=“let...= false; age = 32; 效果图演示: 特殊的选择绑定 Angular中的指令分三类: 1.组件指令:NG中Component继承自Directive 2.结构型指令:会影响...DOM树结构,必须使用开头,如ngFor,*ngIf 3.属性型指令:不会影响DOM树结构,只是影响元素外观或行为,必须用[]括起来,如 :[ngClass],[ngStyle] 在FormsModule模块中,使用之前必须添加 在app.module.ts主模块中导入模块 import {FormsModule} from'@angular/forms'...--Angular专用事件:“模型数据改变”ngModelChange-->> 当前的用户绑定{{uname}} ts文件 改变值打印在控制台上 uname="dingding";

    3.6K10

    Angular 显示英雄列表

    *ngFor 列出这些英雄 打开 HeroesComponent 的模板文件,并做如下修改: 在顶部添加  然后添加表示无序列表的 HTML 元素() 在  中插入一个 Angular 会把所点击的  上的 hero 对象传给它,这个 hero 也就是前面在 *ngFor 表达式中定义的那个。...英雄们显示在列表中,并且所点英雄的详情也显示在了页面的下方。 修复 - 使用 *ngIf 来隐藏空白的细节 该组件应该只有当 selectedHero 存在时才显示所选英雄的详情。...把显示英雄详情的 HTML 包裹在一个  中。 并且为这个 div 添加 Angular 的 *ngIf 指令,把它的值设置为 selectedHero。...你使用 *ngFor 显示了一个列表。 你使用 *ngIf 来根据条件包含或排除了一段 HTML。 你可以用 class 绑定来切换 CSS 的样式类。

    4K30

    AngularDart4.0 指南- 模板语法二 顶

    在Angular中你不需要这些指令。 通常,您可以使用功能更强大,表现力更强的Angular绑定系统获得相同的结果。 当你可以写一个简单的绑定时为什么要创建一个指令来处理点击呢?...本节介绍常见的结构指令: NgIf:有条件地从DOM中添加或删除元素。 NgFor:为列表中的每个项目重复一个模板。 NgSwitch:只显示多个可能元素中的一个。...Angular把这条指令翻译成一个围绕宿主元素的,然后重复使用这个模板为列表中的每个英雄创建一组新的元素和绑定。 在“结构指令”指南中了解微语法。...* ngFor与index(索引) NgFor指令上下文的index属性返回每个迭代中项目的从零开始的索引。 您可以捕获模板输入变量中的index,并在模板中使用它。...在HeroDetailComponent中,这些属性使用注解标记为输入或输出属性。

    30K20

    AngularDart4.0 英雄之旅-教程-04明细 顶

    > {{hero.name}} 要在模板中使用Angular指令,需要在组件的@Component注解的指令参数中列出。...刷新浏览器,该应用程序不再失败,名称列表再次显示在浏览器中。 当没有选定的英雄时,ngIf指令从DOM中移除英雄详情HTML。 没有英雄细节元素或绑定担心。...在结构指令页面和模板语法页面的内置指令部分阅读有关ngIf和ngFor的更多信息。 格式化选中hero 当选择的英雄细节显示在列表下方时,很难在列表中识别选定的英雄。...在模板中,将以下绑定添加到标记中: [class.selected]="hero === selectedHero" 当表达式(hero === selectedHero)为true时,Angular...您了解了如何在组件模板中使用核心指令ngIf和ngFor。 您在CSS文件中定义了样式,并使用它们来设置应用程序的样式。 你的应用应该看起来像这个实例(查看源代码)。

    3K30

    ng-content 中隐藏的内容

    如果你尝试在 Angular 中编写可重复使用的组件,则可能会接触到内容投射的概念。然后你发现了 ,并找到了一些关于它的文章,进而实现了所需的功能。...简单示例 在本文中我们使用一个示例,来演示不同的方式实现内容投影。...在我们尝试解释为什么之前,让我们再来验证一个问题,即在 ng-content 指令的外层容器中添加 ngIf 指令: import { Component } from '@angular/core';...难道这是 ngIf 指令产生的问题,让我们测试一下 ngFor 指令,看看是否有同样的问题: import { Component } from '@angular/core'; @Component...The solution 为了让包装器能够控制其子元素的实例化,我们可以通过两种方式完成:在我们的内容周围使用 元素,或者使用带有 “*” 语法的结构指令。

    2.7K30

    Angular 2 数据显示

    本章节我们将为大家介绍如何将数据显示到用户界面上,可以使用以下三种方式: 通过插值表达式显示组件的属性 通过 NgFor 显示数组型属性 通过 NgIf 实现按条件显示 ---- 通过插值表达式显示组件的属性...以下代码基于 Angular 2 TypeScript 环境配置 来创建,你可以在该章节上下载源码,并修改以下提到的几个文件。...app/app.component.ts 文件: import { Component } from '@angular/core'; @Component({ selector: 'my-app'...会自动从组件中提取 title 和 mySite 属性的值,并显示在浏览器中,显示信息如下: 使用 ngFor 显示数组属性 我们也可以循环输出多个站点,修改以下文件: app/app.component.ts...{{title}} 我喜欢的网站: {{mySite}} 网站列表: ngFor="let site

    2.4K20

    Angular 从入坑到挖坑 - 表单控件概览

    在使用 ngModel 进行模板绑定时,angular 在 form 标签上自动附加了一个 NgForm 指令,因为 NgForm 指令会控制表单中带有 ngModel 指令和 name 属性的元素,而...name 属性则是 angular 用来注册控件的 key,所以在表单中使用 ngModel 进行双向数据绑定时,必须要添加 name 属性 4.2.2、跟踪表单控件的状态 在表单中使用 ngModel...4.3、响应式表单 4.3.1、快速上手 响应式表单依赖于 ReactiveFormsModule 模块,因此在使用前需要在根模块中引入 import { BrowserModule } from '@...4.3.2、通过 FomGroup 组合多个控件 一个表单不可能只有一个控件,通过在组件中构造 FormGroup 实例来完成对于多个表单控件的统一管理 在使用 FormGroup 时,同样在组件中定义一个属性用来承载控件组实例...在模板驱动表单中,因为不是直接使用的 FormControl 实例,因此这里应该在模板上添加一个自定义的指令来完成对于控件数据的校验 使用 angular cli 创建一个用来进行表单验证的指令 ng

    18.9K20

    【Appetite】ionic3实录(七)次页实现及分析解决问题【下】

    问题二:为什么用[hidden],不用*ngIf或者ngSwitch? 因为前者只是隐藏,而后两者是会移除。...也就是说,前者只会初始化一次,而后两者每次显示都需要重新初始化,进一步说,若使用后两者方式,对于这里用到的swiper,它不是一个angular封装起来的组件,不会自动初始化,我们每次显示它时都需要显式调用一下...是的,在大多场景中可以直接用ion-slides,只是会有个别坑要解决,比如我们改动下ts和html文件。...ts中把initSwiper方法相关内容移除: import { Component, ViewChild, ElementRef, ChangeDetectorRef } from '@angular...是因为该组件在异步获取到数据this.vm.dessertSlides前已完成了初始化了,这样新数据其实没有应用到,为了处理这种情况,我们改造一下html,为ion-slides组件加上一段*ngIf=

    1.5K20
    领券