angula5基本指令的学习

指令是ng最为强大的功能之一,跟之前的angular.js 语法不一样,angular5采用了一种新的语言,typescript语法,但是很多内容相似。下面为大家介绍自己在学习5的一些基础知识

1、*ngFor 像 for 循环一样,可以重复的从数组中取值并显示出来。
/ .ts

this.userInfo = ['张三', '李四', '王五'];

// .html

<div class="ui list" *ngFor="let username of userInfo">
 <div class="item">{{username}}</div>
</div>
讲解: 
他的语法是 *ngFor="let username of userInfo" ,其中 userInfo 是从中取值的数组,username 是每次从中取出来的值。然后在这个标签里面的内容就会重复执行,并通过双向绑定,将 username 显示出来。
2、ngIf:根据条件决定是否显示或隐藏这个元素。

<div *ngIf="false"></div>
<div *ngIf="a > b"></div>
<div *ngIf="username == '张三'"></div>
<div *ngIf="myFunction()"></div>
永远不会显示
当 a 大于 b 的时候显示
当 username 等于 张三 的时候显示
根据 myFunction() 这个函数的返回值,决定是否显示

3、ngSwitch 防止条件复杂的情况导致过多的使用 ngIf。
例子:
// .html

<div class="container" [ngSwitch]="myAge">
 <div *ngSwitchCase="'10'">age = 10</div>
 <div *ngSwitchCase="'20'">age = 20</div>
 <div *ngSwitchDefault="'18'">age = 18</div>
</div>
讲解: 

[ngSwitch] 先与目标进行绑定,ngSwitchCase 列出每个可能性,ngSwitchDefault 列出默认值。
4、ngStyle 可以使用动态值给特定的 DOM 元素设定 CSS 属性
// .ts
backColor: string = 'red';

// .html
<div [style.color]="yellow">
 你好,世界
</div>
<div [style.background-color]="backColor">
 你好,世界
</div>
<div [style.font-size.px]="20">
 你好,世界
</div>
<div [ngStyle]="{color: 'white', 'background-color': 'blue', 'font-size.px': '20'}">
 你好,世界
</div>
直接设置颜色为 yellow。
设置背景颜色为 backColor,并可以在 .ts 文件中对 backColor 的值进行修改。
设置字体大小,需要注意的是 只写 font-size 会报错,必须在后面加上 .px。当然 .em .% 都是可以的。
前三种都是只设置一个,写 [ngStyle] 可以同时写多个,使用花括号包住里面的内功。需要注意的是连字符 - 是不允许出现在对象的键名当中的,如果使用 background-color 等时需要加上单引号。
5、动态地设置和改变一个给定 DOM 元素的 CSS类
// .scss
.bordered {
 border: 1px dashed black;
 background-color: #eee;
}

// .ts
isBordered: boolean = true;

// .html
<div [ngClass]="{bordered: isBordered}">
 是否显示边框
</div>
scss 中设置了样式,相当于你建了一个 class="bordered" 。
ts 中新建了一个 isBordered,用于判断是否显示 .scss 中的样式。
html 中用 isBordered 作为 bordered 是否显示 的判断依据。

6、ngNonBindable 告诉 Angular 不要绑定页面的某个部分。
.html

<div ngNonBindable>
 {{我不会被绑定}}
</div>
讲解: 
使用了 ngNonBindable ,花括号就会被当做字符串一起显示出来。
7、ngcontent 在组件中嵌入模板代码,方便定制可复用的组件。
比如:页面的header是个通用组件,导航菜单样式已经设定好,只需在header标签内加上菜单内容。
源码以前文为基础。
<app-header #header [title]="title" name="{{name}}" (checkEmitter)="onCheckedChange($event)" >
  <menu>
    <ul>
      <li>aa</li>
      <li>bb</li>
      <li>cc</li>
    </ul>
  </menu>
</app-header>
<app-header #header2 [title]="title2" name="{{name}}" (checkEmitter)="onCheckedChange($event)" ></app-header>
<button (click)="header.toggle()">通过本地变量调用子组件方法</button>
<button (click)="headerToggle()">通过ViewChild调用子组件方法</button>
//header组件
<p>
  {{title}}
</p>
<p><input type="checkbox" name="cb" [(ngModel)]="isChecked" (click)="toggle()" />Checkbox <br /></p>
<ng-content select="menu"></ng-content>
用ng-content标签,将父组件模板中包含的menu标签内容加到指定位置。select属性支持css选择器,如:"#id",".class","[name=value]"等 个人感觉跟vue里面的slot效果一样的
8[innerHtml]
在AngularJS 1.x 中可以使用ng-bind-html来插入一段html代码,相当于struts2 标签的escape属性。但是AngularJS 2中取消了ng-bind-html,当项目中确实有需要动态插入html代码的时候我们该怎么做呢?

解决方法:
使用[innerHtml]代替ng-bind-html。
innerHtml属性,用于设置标签内的html,[innerHtml]=”data.title”用于动态将AngularJS 2的变量值赋给innerHtml属性,以实现ng-bind-html的效果。

完整示例:
<a href="#" target="_blank" [innerHtml]="data"></a>
export class SearchComponent {
    private data: string = "<b>helloWorld</b>";
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值