▓▓▓▓▓▓ 大致介绍

  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入门-数据绑定的更多相关文章

  1. Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求

    上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...

  2. Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数

    上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...

  3. Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数

    上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇 ...

  4. Angular2入门系列教程4-服务

    上一篇文章 Angular2入门系列教程-多个组件,主从关系 在编程中,我们通常会将数据提供单独分离出来,以免在编写程序的过程中反复复制粘贴数据请求的代码 Angular2中提供了依赖注入的概念,使得 ...

  5. Angular2入门系列(五)———— 路由参数设置

    Angular2入门系列(五)---- 路由参数设置路由配置: { path: '', component: CarProFile, children: [ { path: 'add', compon ...

  6. Angular2 入门详解

    AngularJS 2 快速入门 npm是什么?   npm其实是Node.js Package Manager的简称,是Node.js包管理工具(package manager) 安装Node.js ...

  7. Angular2 入门

    1. 说明 该文档为Angular2的入门文档,可以根据该文档的内如做出一个“helloworld”类型的Angualr2入门程序,通过该文档可以初步了解Angular2的相关知识以及开发流程,同时搭 ...

  8. angular2入门,就这一篇就够了

    背景与概念: AngularJS2 是一款开源JavaScript库,由Google维护,用来协助单一页面应用程序运行. AngularJS2 是 Angular 1.x 的升级版本,性能上得到显著的 ...

  9. Angular2入门--架构概览

    Angular 介绍 Angular 是一款来自谷歌的开源的web前端框架,诞生于2009年,是一款优秀的前端JS框架,已经被用于谷歌的多款产品. Angular 基于Typescript开发 ,更适 ...

随机推荐

  1. Javascript中好用更改时间的方法

    <script type="text/javascript"> //格式化时间格式的字符串 String.prototype.myTimes = function () ...

  2. Docker笔记二:Lumen & Redis

    Lumen 基于 Laravel 打造,专为构建微服务和 APIs 而生:Redis 与 Memcached 均为常用的 key-value 内存对象缓存服务(系统),免费开源,Redis 支持持久化 ...

  3. 《shell脚本学习指南》学习笔记之入门

    为什么要使用shell脚本? shell脚本能够轻易处理文件与目录之类的对象,而且是各UNIX系统之间经过POSIX标准化的通用的功能,因此Shell脚本只要“用心写”一次,即可应用到很多系统上,因此 ...

  4. css样式表1 2017-03-11

    样式表 DIV + CSS 一.        样式表的分类 以下均以div标签为例,可以换成其他标签 1.  内联样式表 格式: style="属性1:属性值1:属性2:属性值2:属性3: ...

  5. 获取3个月前的时间(获取某一天的时间 NSDate)

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; ...

  6. Servlet 3.0/3.1 中的异步处理

    在Servlet 3.0之前,Servlet采用Thread-Per-Request的方式处理请求,即每一次Http请求都由某一个线程从头到尾负责处理.如果一个请求需要进行IO操作,比如访问数据库.调 ...

  7. 升级后 VTE 类虚拟终端不工作

    故障现象 运行 vte 终端,如 gnome terminal.sakura 等光标不出来.xterm 可以运行. 在 xterm 终端中运行 gnome terminal 出现一下错误: grant ...

  8. SQL中PIVOT和UNPIVOT行列转换

    DECLARE @sql_col VARCHAR(8000); DECLARE @sql_str VARCHAR(8000); DECLARE @sql_ VARCHAR(MAX); SELECT @ ...

  9. Python round() 函数

    round() 方法返回浮点数x的四舍五入值. 以下是 round() 方法的语法: round( x [, n] )x为浮点数,n为保留的小数点位. 以下展示了使用 round() 方法的实例: p ...

  10. python 接口自动化测试--代码实现(七)

    数据库还原脚本: #! /usr/bin/python # coding:utf-8 import time from Engine.SqlEngine import MSSQL COUNT=1 de ...