Angular2入门-数据绑定
▓▓▓▓▓▓ 大致介绍
Angular2中数据绑定的方式默认是以单向方式,数据绑定的方式可以分为:
1、属性绑定和插值表达式 组件类-> 模板
2、事件绑定:模板 -> 组件类
3、双向绑定: 模板 <-> 组件类
▓▓▓▓▓▓ 事件绑定
事件绑定是把模板中的事件绑定到组件类中的方法上,例如在一个组件中的HTML代码是:
<p>
<a (click)="doClick($event)">点我</a>
</p>
(click)表示要进行的操作,当用户点击时就会执行组件类中的doClick方法
export class BindComponent implements OnInit {
constructor() { }
ngOnInit() {
}
doClick(event: any){
console.log(event.target.innertext);
}
}
▓▓▓▓▓▓ 属性绑定和插值表达式
其实 属性绑定和插值表达式是同一个东西,因为在解析代码时,插值表达式会转换为属性绑定,所以你想用哪个就用哪个
下面的代码作用都是一样的
<!-- 插值表达式 -->
<img src="{{imgUrl}}" /> <!-- 属性绑定 -->
<img [src]="imgUrl" />
属性绑定又分为HTML属性绑定和DOM属性绑定,他们之间的区别是什么?先来看一个例子
<input type="text" value="hello" (input)="doInput($event)" />
doInput(event: any){
console.log(event.target.value);
console.log(event.target.getAttribute('value'));
}
浏览器的显示:

可以看到event.target.value是获取的DOM属性,是可变的。表示当前元素的状态
而event.target.getAttribute("value")获取的是HTML属性,是不可变的。只负责初始化HTML元素,不可改变
注意:
1、有些DOM属性没有映射的HTML属性,同样有些HTML属性也没有映射的DOM属性
2、模板绑定的是DOM属性
HTML属性绑定
1、基本HTML属性绑定
<td [attr.colspan]="表达式"></td>
2、css绑定
<div class="a" [class]="b"></div> //b会完全替代a
<div [class.a]="fn()"></div> //fn()返回true,false,如果true添加.a
<div [ngClass]="{a:isA,b:isB}"></div> //b会完全替代a
3、样式绑定
<button [style.color]="a?red:green">button</button>
<button [ngStyle]="{'font-style':a?'red':'green'}">button</button>
▓▓▓▓▓▓ 双向绑定
双向绑定可以从组件类 -> 模板,也可以从模板 -> 组件类
例子:
<input type="text" [(ngModel)]="name" (input)="doInput()" />
private name: string = 'asdf';
doInput(){
setInterval(() => {
this.name = 'sdf';
},3000);
}
利用[(ngModel)]可以实现双向数据绑定,首先在输入框中修改name,从而改变组件类中name的值,是模板组 -> 件类,修改值之后三秒,又重新设置name的值,是组件类 -> 模板
Angular2入门-数据绑定的更多相关文章
- Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求
上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...
- Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数
上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...
- Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数
上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇 ...
- Angular2入门系列教程4-服务
上一篇文章 Angular2入门系列教程-多个组件,主从关系 在编程中,我们通常会将数据提供单独分离出来,以免在编写程序的过程中反复复制粘贴数据请求的代码 Angular2中提供了依赖注入的概念,使得 ...
- Angular2入门系列(五)———— 路由参数设置
Angular2入门系列(五)---- 路由参数设置路由配置: { path: '', component: CarProFile, children: [ { path: 'add', compon ...
- Angular2 入门详解
AngularJS 2 快速入门 npm是什么? npm其实是Node.js Package Manager的简称,是Node.js包管理工具(package manager) 安装Node.js ...
- Angular2 入门
1. 说明 该文档为Angular2的入门文档,可以根据该文档的内如做出一个“helloworld”类型的Angualr2入门程序,通过该文档可以初步了解Angular2的相关知识以及开发流程,同时搭 ...
- angular2入门,就这一篇就够了
背景与概念: AngularJS2 是一款开源JavaScript库,由Google维护,用来协助单一页面应用程序运行. AngularJS2 是 Angular 1.x 的升级版本,性能上得到显著的 ...
- Angular2入门--架构概览
Angular 介绍 Angular 是一款来自谷歌的开源的web前端框架,诞生于2009年,是一款优秀的前端JS框架,已经被用于谷歌的多款产品. Angular 基于Typescript开发 ,更适 ...
随机推荐
- 学习笔记——Java包装类
由于Java不能定义基本类型的对象,所以通过包装类提供了各种可用方法的封装. 这一部分的知识,需要能够通过查看Integer.Boolean.Byte.Character.Double.Number类 ...
- 【openstack N版】——计算服务nova
一.openstack计算服务nova 1.1nova介绍 Nova是openstack最早的两块模块之一,另一个是对象存储swift.在openstack体系中一个叫做计算节点,一个叫做控制节点.这 ...
- 《C++ Primer》学习笔记 :命名空间的using声明
最近在学C++,在<C++ Primer>第五版的3.1节中说到使用using声明来使用命名空间中的成员,<C++ Primer>中这样写道: 有了using声明就无须专门的前 ...
- iOS回顾笔记( 01 )
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...
- 关于c# 基础运算符的应用
运算符 分为5种 1 算数预算符 +,-,*,/,分别为加减乘除 ++为加1,--为减1, 前++ 后++ 的区别 int a = 10, b = a++; Console ...
- JS中的类,类的继承方法
大牛请无视此篇! 首先我们定义一个类,方法很简单,就像我们定义函数一样,只不过我们为了与函数区分,名称首字母要大写,看代码: function Person (){ } 这就是一个很简单的Poson类 ...
- 每天一个linux命令(35)--free命令
free命令可以显示Linux系统中空闲的.易用的物理内存及swap内存,及被内核使用的buffer.在Linux系统监控的工具中,free 命令是最经常使用的命令之一. 1.命令格式: free [ ...
- PDO控制、连接数据库
PDO(PHP Data Objects)是一种在PHP里连接数据库的使用接口.PDO与mysqli曾经被建议用来取代原本PHP在用的mysql相关函数,基于数据库使用的安全性,因为后者欠缺对于SQL ...
- 一道面试题引发的对javascript类型转换的思考
最近群里有人发了下面这题:实现一个函数,运算结果可以满足如下预期结果: add(1)(2) // 3 add(1, 2, 3)(10) // 16 add(1)(2)(3)(4)(5) // 15 对 ...
- R语言入门(一)简介安装
数据挖掘常用的语言有R语言,python,SQL等,其中R语言最受欢迎.(注:SQL Server包含微软研究院开发的两种数据挖掘算法:Microsoft决策树和Microsoft聚集,此外还支持第三 ...