angular6.x系列的学习笔记记录,仍在不断完善中,学习地址:

https://www.angular.cn/guide/template-syntax

http://www.ngfans.net/topic/12/post/2

系列目录

(1)组件详解之模板语法

(2)组件详解之组件通讯

(3)内容投影, ViewChild和ContentChild

(4)指令

(5)路由

章节目录

1插值语法和表达式

2在模板内部定义变量

3值绑定,事件绑定,双向绑定

4内置结构型指令*ngIf,*ngFor,ngSwitch

5内置属性型指令:NgClass,NgStyle

6管道与安全导航

7导入Bootstrap和fontawesome

Angular在模板引擎里面对这些最基本的东西做了很强的支持,所以它的模板表达能力是非常强的

1插值语法和表达式

类似前端模板引擎handlebars等的语法

能够插入定义的变量,简单的加减乘除等数学运算和调用方法

  1. <p>定义的变量:{{str}}</p>
  2. <p>简单数学运算:1+1={{1+1}}</p>
  3. <p>调用方法:{{getValue()}}</p>

  

2在模板内部定义变量

我们既可以在组件内部定义变量,也可以模板内部定义变量

通过#自动生成一个局部变量,给标签命名,可以在组件内部和模板内部传递

  1. <input #inputVal>
  2. <p>{{inputVal.value}}</p>
  3. <button class="btn btn-success" (click)="print(inputVal.value)">打印</button>

  

3值绑定,事件绑定,双向绑定

值绑定

在模板内部,一些标签的某些属性不是固定的,会根据不同的情形变化,例如照片的src属性,

我们可以通过值绑定(用[]表示),将它绑定到变量上,随着变量值的改变而改变

事件绑定

在模板内部,某些操作会触发事件,例如点击按钮

我们可以通过事件绑定(用()表示),将它绑定到指定事件上

  1. <img [src]="imgSrc" />
  2. <button (click)="changeImgSrc()">
  3. 将事件changeImgSrc()绑定到button上来,
  4. 修改imgSrc变量的值,改变img标签通过值绑定的src属性的值
  5. </button>

   

双向绑定

什么是双向绑定呢?指的是界面的操作能实时反映到数据,数据的变更能实时展现到界面。

双向绑定用[()]来表示,常见的双向绑定有NgModel,它仅用于表单类元素上面

  1. <input [(ngModel)]="str">
  2. <p>{{str}}</p>
  3. <button (click)="changeStr()"></button> 

组件内部修改数据能够实时反应到界面,界面上的修改也能实时传递到组件内部

4内置结构型指令*ngIf,*ngFor,ngSwitch:

*ngIf

在模板内部来判断元素是否存在,它不是用display:none或者class=hide等显示隐藏的方式,而是直接删除,所以为真即存在,为假即删除

它既可以是已经定义的变量,也可以是语句

  1. <p *ngIf="1>=2">为false不显示</p>
  2. <p *ngIf="isShow">变量控制是否显示</p>  

*ngFor

作用如其名,用于遍历数组

  1. <ul>
  2. <li *ngFor="let item of arr;let i=index;">
  3. {{i+1}}:{{item.value}}
  4. </li>
  5. </ul>

  

ngSwitch

神似其他语言里面的条件语句switch case,代码如下

  1. <span [ngSwitch]="num">
  2. <span *ngSwitchCase="'1'">值为1</span>
  3. <span *ngSwitchCase="'2'">值为2</span>
  4. <span *ngSwitchCase="'3'">值为3</span>
  5. <span *ngSwitchCase="'4'">值为4</span>
  6. <span *ngSwitchCase="'5'">值为5</span>
  7. <span *ngSwitchDefault>默认值10</span>
  8. </span>

  

 5内置属性型指令:NgClass,NgStyle

NgClass和NgStyle都是用来通过代码控制标签样式

 NgClass

得先写好样式文件,通过代码切换不同的样式

  1. <p [ngClass]="{'special':true}">用NgClass添加样式类</p>
  1. special是已经写好的样式类
  2.  
  3.   

NgStyle

不需要先写好样式文件,能够细节的去处理样式

  1. <p [ngStyle]="{'color':1>2?'red':'blue'}">用NgStyle控制内联样式</p>
  2. <div [ngStyle]="{'background-image': 'url('+x.ImgUrl+')','width':'100%','height':'120px','background-size':'cover'}">

  

  

6管道与安全导航

管道

当我们有数据需要做格式转换的时候,管道是很好的选择,因为它速度快,能复用

管道符号用|表示,例如x | y,把x作为参数传到y中处理,当然可以 x | y | z,它能够级联使用

例如时间的处理

  1. <p>{{currentTime | date:'yyyy-MM-dd HH:mm:ss'}}</p>

安全导航 

很多时候我们在使用某个对象变量的时候,如果这个对象为null或者undefined,当我们直接点它下面的属性,就会报错

对于这种情况,常用的解决方法是三元操作,先判断一下这个对象

相比于三元操作,有更加优秀的解决方法

  1. <p>{{Obj?.value}}</p>

它会先判断Obj,如果为null或者undefined,不会直接报错

7 导入Bootstrap和fontawesome

首先在配置文件package.json  dependencies下添加依赖的模块

  1. "bootstrap": "^3.3.7",
  2. "font-awesome": "^4.7.0",  

然后在src文件夹下的style文件里面添加

  1. @import "~bootstrap/dist/css/bootstrap.min.css";
  2. @import "~font-awesome/css/font-awesome.min.css";  

这样就可以在模板内部使用它们了

(终)

文档信息


  1. 感谢您的阅读,如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮。本文欢迎各位转载,但是转载文章之后必须在文章页面中给出作者和原文连接

Angular6 学习笔记——组件详解之模板语法的更多相关文章

  1. Angular6 学习笔记——组件详解之组件通讯

    angular6.x系列的学习笔记记录,仍在不断完善中,学习地址: https://www.angular.cn/guide/template-syntax http://www.ngfans.net ...

  2. Angular6 学习笔记——路由详解

    angular6.x系列的学习笔记记录,仍在不断完善中,学习地址: https://www.angular.cn/guide/template-syntax http://www.ngfans.net ...

  3. Android学习笔记-Dialog详解

    1.对话框的使用 1.1AlertDialog的显示 简单对话框以及监听的设置:重点掌握三个按钮(也就是三上单词): PositiveButton(确认按钮);NeutralButton(忽略按钮) ...

  4. JavaScript学习笔记-实例详解-类(二)

    实例详解-类(二)   //===给Object.prototype添加只读\不可枚举\不可配置的属性objectId(function(){ Object.defineProperty(Object ...

  5. JavaScript学习笔记-实例详解-类(一)

    实例详解-类(一): //每个javascript函数(除了bind())都自动拥有一个prototype对象// 在未添加属性或重写prototype对象之前,它只包含唯一一个不可枚举属性const ...

  6. C++并发与多线程学习笔记--unique_lock详解

    unique_lock 取代lock_quard unique_lock 的第二个参数 std::adopt_lock std::try_to_lock std::defer_lock unique_ ...

  7. [CSS3] 学习笔记-选择器详解(三)

    1.UI元素状态伪类选择器 在CSS3的选择器中,除了结构性伪类选择器外,还有一种UI元素伪类选择器.这些选择器的共同特征是:指定的样式只有当元素处于某种状态时才起作用,在默认状态下不起作用.在CSS ...

  8. [CSS3] 学习笔记-选择器详解(二)

    1.选择器first-child.last-child.nth-child和nth-last-child 利用first-child.last-child.nth-child和nth-last-chi ...

  9. Linux学习笔记之详解linux软连接和硬链接

    0x00 链接文件 Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).默认情况下,ln命令产生硬链接. [软连接] 另外一种连接称之为符 ...

随机推荐

  1. np.random.random()系列函数

    1.np.random.random()函数参数 np.random.random((1000, 20)) 上面这个就代表生成1000行 20列的浮点数,浮点数都是从0-1中随机. 2.numpy.r ...

  2. Sum of Consecutive Prime Numbers

    Sum of Consecutive Prime Numbers http://poj.org/problem?id=2739 Time Limit: 1000MS   Memory Limit: 6 ...

  3. C++ define与const

    C++中不但可以用define定义常量还可以用const定义常量,它们的区别如下: 用#define MAX 255定义的常量是没有类型的,所给出的是一个立即数,编译器只是把所定义的常量值与所定义的常 ...

  4. day7:vcp考试

    Q121. An ESXi 6.x host in the vCenter Server inventory has disconnected due to an All Paths Down (AP ...

  5. 35-面试:如何找出字符串的字典序全排列的第N种

    http://www.cnblogs.com/byrhuangqiang/p/3994499.html

  6. linux下nginx tomcat集群

    集群系统一般通过两台或多台节点服务器系统通过相应的硬件及软件互连,每个群集节点都是运行其自己进程的独立服务器. 这些进程可以彼此通信,对网络客户机来说就像是形成了一个单一系统,协同起来向用户提供应用程 ...

  7. ubuntu下常用操作

    屏幕截图: 可以用ubuntu自带的截图软件:gnome-screenshot. 该工具截图区域并且复制到剪切板命令为  gnome-screenshot -c -a,可以给该命令添加快捷方式,alt ...

  8. jquery ui中的dialog,官网上经典的例子

    jquery ui中的dialog,官网上经典的例子   jquery ui中dialog和easy ui中的dialog很像,但是最近用到的时候全然没有印象,一段时间不用就忘记了,这篇随笔介绍一下这 ...

  9. const当做标记的函数重载,但是仅仅是限于类里面的成员函数

    (1)我们知道函数的重载时根据函数的参数类型以及函数参数个数来重载的,不能用函数返回值来重载函数.但是有时候函数参数个数和函数参数类型重载函数会和默认参数发生冲突: int fun(int i,cha ...

  10. JavaScript中的 prototype 和 constructor

    prototype属性  任何js函数都可以用作构造函数, 而构造函数需要用到prototype属性, 因此, 每个js函数F(除了ES5的Function.bind()方法返回的函数外) 都自动拥有 ...