Angular 2 模板语法概述

Angular 2 模板语法概述

Angular 2 的模板语法基于 HTML,并扩展了动态绑定、指令和组件交互的功能。模板是 Angular 应用的核心部分,用于定义用户界面。

插值表达式

使用双大括号 {``{ }} 绑定组件属性到模板:

html 复制代码
<p>{{ title }}</p>

插值支持表达式运算,如 {``{ 1 + 1 }} 或调用组件方法 {``{ getValue() }}

属性绑定

使用方括号 [] 绑定组件属性到 HTML 元素的属性:

html 复制代码
<img [src]="imageUrl" [alt]="imageAlt">

动态绑定适用于原生属性或自定义属性。

事件绑定

使用圆括号 () 监听 DOM 事件并触发组件方法:

html 复制代码
<button (click)="onClick()">Click Me</button>

支持传递事件对象 $event 到方法中。

双向绑定

结合 [()] 语法实现双向数据绑定,通常与 ngModel 指令配合使用:

html 复制代码
<input [(ngModel)]="userName">

需导入 FormsModule 模块以启用双向绑定功能。

指令

Angular 提供内置指令控制模板逻辑和渲染:

  • 结构型指令 (如 *ngIf*ngFor):

    html 复制代码
    <div *ngIf="isVisible">Content</div>
    <li *ngFor="let item of items">{{ item }}</li>
  • 属性型指令 (如 ngClassngStyle):

    html 复制代码
    <div [ngClass]="{ 'active': isActive }"></div>

模板引用变量

使用 # 创建模板局部变量,引用 DOM 元素或组件实例:

html 复制代码
<input #inputRef (keyup)="onKeyUp(inputRef.value)">

管道

管道用于格式化模板中的数据,语法为 |

html 复制代码
<p>{{ today | date:'yyyy-MM-dd' }}</p>

内置管道包括 dateuppercasejson 等,支持自定义管道。

安全导航操作符

使用 ?. 避免属性路径为空时引发的错误:

html 复制代码
<p>{{ user?.name }}</p>

样式绑定

动态绑定内联样式或类:

html 复制代码
<div [style.color]="textColor">Text</div>
<div [class.highlight]="isHighlighted">Content</div>

注意事项

  • 避免在模板中编写复杂逻辑,建议将逻辑移至组件类。

  • 模板语法仅支持表达式,不支持语句(如赋值、new 等)。

  • 使用 ngNonBindable 忽略模板中的绑定语法:

    html 复制代码
    <div ngNonBindable>{{ ThisWillNotBind }}</div>
相关推荐
wuhen_n31 分钟前
网络请求在Vite层的代理与Mock:告别跨域和后端依赖
前端·javascript·vue.js
用户69371750013845 小时前
Google 正在“收紧侧加载”:陌生 APK 安装或需等待 24 小时
android·前端
蓝帆傲亦5 小时前
Web 前端搜索文字高亮实现方法汇总
前端
用户69371750013845 小时前
Room 3.0:这次不是升级,是重来
android·前端·google
漫随流水7 小时前
旅游推荐系统(view.py)
前端·数据库·python·旅游
踩着两条虫8 小时前
VTJ.PRO 核心架构全公开!从设计稿到代码,揭秘AI智能体如何“听懂人话”
前端·vue.js·ai编程
jzlhll1239 小时前
kotlin Flow first() last()总结
开发语言·前端·kotlin
用头发抵命9 小时前
Vue 3 中优雅地集成 Video.js 播放器:从组件封装到功能定制
开发语言·javascript·ecmascript
蓝冰凌10 小时前
Vue 3 中 defineExpose 的行为【defineExpose暴露ref变量】详解:自动解包、响应性与实际使用
前端·javascript·vue.js
奔跑的呱呱牛10 小时前
generate-route-vue基于文件系统的 Vue Router 动态路由生成工具
前端·javascript·vue.js