当前位置:   article > 正文

angular2指令解读:ngFor,ngIf,ngSwitch,ngStyle,ngClass用法_ngswitch用法

ngswitch用法

总结于他人文档如有侵权,联系删稿

0.先给组件赋值一个测试数据

  1. import {Component} from '@angular/core';
  2. @Component({
  3. selector: 'ng-tag',
  4. styles: [require('./NgTag.scss')],
  5. template: require('NgTag.html')
  6. })
  7. export class NgTagComponent {
  8. list:any;
  9. ngSwitchList:any;
  10. ngStyleList:any;
  11. constructor() {
  12. this.list = [{
  13. 'name': 'xiaomo'
  14. },{
  15. 'name': 'xiaogang'
  16. },{
  17. 'name': 'xiaomoxue'
  18. }];
  19. this.ngSwitchList=[
  20. 'xiaomo',
  21. 'xiaoming'
  22. ];
  23. this.ngStyleList={
  24. 'color':'blue',
  25. 'backgroundColor':'green'
  26. };
  27. };
  28. }

1. ngFor

  1. <ul class="list-group" *ngFor="let item of list">
  2. <li class="list-group-item">{{item.name}}</li>
  3. </ul>
效果:


2. ngIf

我在组件中定义了一个list

  1. this.list = [{
  2. 'name': 'xiaomo'
  3. },{
  4. 'name': 'xiaogang'
  5. },{
  6. 'name': 'xiaomoxue'
  7. }];

我在循环这个数组对象的时候去比对item.name 如果是 xiaomo,就 出现 ngIf中的内容

  1. <ul *ngFor="let item of list">
  2. <li *ngIf="item.name=='xiaomo'" class="list-group-item">哇,我在list列表中找到了 <span class="label label-info">{{item.name}}</span></li>
  3. </ul>

效果:

3. ngSwitch

在ngSwitch="xx"。xx可以是一个表达式或者是变量。

 ngSwitchcase给定值,绑在要显示的内容上。当XX的值和case值相同时就显示该case绑定的内容

当它们的匹配表达式值与switch表达式的值匹配时,NgSwitch会戳出嵌套视图。


换一种说法:


您定义一个容器元素(在[ngSwitch] =“...”属性中放置具有开关表达式的指令的位置)
您可以在NgSwitch内部定义内部视图,并在视图根元素上放置一个* ngSwitchCase属性。
NgSwitch中的元素,但在NgSwitchCase或NgSwitchDefault指令之外的元素将保留在该位置。


ngSwitchCase指令通知父NgSwitch评估表达式时要显示的视图。 在ngSwitchCase视图中找不到匹配的表达式时,ngSwitchDefault视图将被打印出来。


我在组件中定义了一个方法,可以设置选中的值给myVal

  1. myVal:number = 0;
  2. changeValue($event):void{
  3. console.log($event.target.value);// 输出选中的值设给myVal
  4. this.myVal = $event.target.value;
  5. }

有一组单选按钮,选中是myVal会改变,ngSwitch会去循环每个case,如果找到了就显示那条case中的数据,不然显示default中的数据

  1. <div>
  2. <h2>ngSwitch</h2>
  3. <input name="myVal" type="radio" title="" value="1" (click)="changeValue($event)">1
  4. <input name="myVal" type="radio" title="" value="2" (click)="changeValue($event)">2
  5. <input name="myVal" type="radio" title="" value="3" (click)="changeValue($event)">3
  6. <input name="myVal" type="radio" title="" value="4" (click)="changeValue($event)">4
  7. <input name="myVal" type="radio" title="" value="5" (click)="changeValue($event)">5
  8. <hr>
  9. <span [ngSwitch]="myVal">
  10. <span *ngSwitchCase="'1'">ONE</span>
  11. <span *ngSwitchCase="'2'">TWO</span>
  12. <span *ngSwitchCase="'3'">THREE</span>
  13. <span *ngSwitchCase="'4'">FOUR</span>
  14. <span *ngSwitchCase="'5'">FIVE</span>
  15. <span *ngSwitchDefault>other</span>
  16. </span>
  17. </div>

4. ngStyle

这里的样式的值都是从组件中取出来的,也就意味着它可以动态,不过建议是封装成class,也就是ngClass

  1. <div [ngStyle]="{'background-color': ngStyleList.backgroundColor,'color':ngStyleList.color}" [style.font-size]="30">
  2. 背景 :{{ngStyleList.backgroundColor}} <br/>
  3. 字体颜色: {{ngStyleList.color}}
  4. </div>
效果:


5. ngClass

左边是class名[要用''包起来],右边是一个true|false表达式

<button class="btn" [ngClass]="{'btn-danger': ngStyleList}">测试</button>
效果:



声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/436107?site
推荐阅读
相关标签
  

闽ICP备14008679号