组件中的模板

引入图片

引入静态资源图片

  1. 在静态资源文件夹assets创建文件夹images,将要引入的图片放置在assets/images文件夹中
  2. 在html中引入图片
    1. <img src="assets/images/Koala.jpg" alt="考拉" />

加载ts中引入的其他网站图片

  1. 在ts中定义图片路径变量
    1. public picUrl:string = 'https://dss2.baidu.com/-vo3dSag_xI4khGko9WTAnF6hhy/super/crop=0,0,1280,800/sign=4c135e228c8ba61ecba1926f7c04bb3a/4a36acaf2edda3cc81ffe0c80fe93901213f923b.jpg';
  1. 在html中引入该变量
    1. <img [src]="picUrl" alt="背景图" />

条件判断

对ts中的布尔变量做判断

  1. 在ts中定义boolean类型的变量
    1. public picFlag:boolean = true;
  1. 在html使用 ng-if 进行判断
    1. <!-- 当picFlag为true时展示 -->
    2. <div *ngIf="picFlag">
    3. <img src="assets/images/Koala.jpg" />
    4. </div>
    5. <!-- 当picFlag为false时展示 -->
    6. <div *ngIf="!picFlag">
    7. <img src="assets/images/Lighthouse.jpg">
    8. </div>

对表达式做判断

  1. 在ts中定义数组
    1. public cars:any[] = [{
    2. title: '第一个新闻',
    3. desc: 'aaa'
    4. },{
    5. title: '第二个新闻',
    6. desc: 'bbb'
    7. },{
    8. title: '第三个新闻',
    9. desc: 'ccc'
    10. }];
  1. 在css文件中定义一个红色class
    1. .red{
    2. color: red;
    3. }
  1. 在html中遍历数组,对下标为1的值标记为红色
    1. <ul>
    2. <li *ngFor="let item of cars; let key = index">
    3. <span *ngIf="key == 1" class="red"> {{key}} : {{item.title}}</span>
    4. <span *ngIf="key != 1"> {{key}} : {{item.title}}</span>
    5. </li>
    6. </ul>

switch-case语句

  1. 在ts中定义一个变量
    1. public orderStatus:number = 1;
  1. 在html中使用switch-case对orderStatus进行判断

    快捷方式 ng-switch

  1. <span [ngSwitch]="orderStatus">
  2. <p *ngSwitchCase="1">
  3. 已支付
  4. </p>
  5. <p *ngSwitchCase="2">
  6. 已确认订单
  7. </p>
  8. <p *ngSwitchCase="3">
  9. 已发货
  10. </p>
  11. <p *ngSwitchCase="4">
  12. 已确认收货
  13. </p>
  14. <p *ngSwitchDefault>
  15. 无效状态
  16. </p>
  17. </span>

ngClass的使用

使用ngClass定义要使用的样式

  1. 在css文件中定义相关样式 ```css .red { color: red; }

.blue { color: blue; }

.orange { color: orange; }

  1. 2. html中使用ngClass决定要使用的class样式
  2. ```html
  3. <div>
  4. <!-- 使用class='red'样式,不使用class='blue'样式 -->
  5. <span [ngClass]="{'red': true, 'blue': false}">
  6. ngClass测试
  7. </span>
  8. </div>

使用ngClass获取ts中的boolean变量改变样式

  1. 在ts中定义boolean类型变量
    1. public colorFlag:boolean = false;
  1. 在html中获取colorFlag的值
    1. <div>
    2. <!-- colorFlag为true时,class='red';colorFlag为false时,class='blue' -->
    3. <span [ngClass]="{'red': colorFlag, 'blue': !colorFlag}">
    4. ngClass测试
    5. </span>
    6. </div>

获取ts中的object变量改变样式

类似绑定数据到html属性

  1. 在ts中定义object类型变量
    1. public classDefine:object = {
    2. 'orange':true,
    3. 'blue':false
    4. }
  1. 在html中将获取ts变量 ```html
    ngClass测试

ngClass测试

  1. <a name="c1515907"></a>
  2. ### 使用class进行样式判断
  3. 当hero对象等于选中的selectedHero对象时,class为.selected
  4. ```html
  5. <li [class.selected]="hero === selectedHero"></li>

ngStyle的使用

使用ngStyle定义一个普通样式

  1. <p [ngStyle]="{'color': 'red'}">
  2. 测试ngStyle
  3. </p>
  4. <!-- 等同于下面 -->
  5. <p style="color: red">
  6. 测试ngStyle
  7. </p>

使用ngStyle引入ts中的样式变量

  1. 在ts中定义样式变量
    1. public styleColor:string = 'red';
  1. 在html中引入该样式变量
    1. <p [ngStyle]="'color' : styleColor">
    2. 测试ngStyle
    3. </p>

管道

  1. 在ts中定义一个日期变量
    1. public today = new Date();
  1. 在html中直接引入,并加入管道对日期格式化 ```html

    {{today}}

{{today | date:’yyyy-MM-dd HH:mm:ss’}}

  1. 3. Angular内置了一些管道,比如DatePipeUpperCasePipeLowerCasePipeCurrencyPipePercentPipe。也可以自定义管道。多个管道也可以串联使用。
  2. <a name="9402944a"></a>
  3. ## 绑定事件
  4. 1. html中绑定事件
  5. ```html
  6. <button (click)='runTest()'>
  7. 测试方法
  8. </button>
  1. 在ts中添加runTest方法
    1. runTest():void {
    2. alert('测试方法');
    3. }
  1. 绑定keyDown事件
    1. <input (keydown)='keydown=($event)' />
  1. 在ts中添加keydown方法
    1. keydown(e):void {
    2. console.log(e);
    3. // e.keyCode获取按下的键值
    4. // e.target获取当前dom节点,即input框
    5. // 此处的dom变量必须声明为any类型,否则会报错
    6. let dom:any = e.target;
    7. dom.style.color = red;
    8. // e.target.value获取input框的value
    9. }

双向数据绑定MVVM

前端修改的数据,绑定的后台变量会跟着修改;(M到V)

后台变量修改,前台绑定的模板跟着修改;(V到M)

双向数据绑定只能作用于表单

  1. 在app.module.ts中引入FormsModule模块 ```typescript // ….. // 引入FormsModule模块 import {FormsModule} from ‘@angular/forms’; //…..

@NgModule({ declarations: [ AppComponent // …… ], imports: [ BrowserModule, // 在此处加入FormsModule模块 FormsModule ], providers: [], bootstrap: [AppComponent] }) export class AppModule { }

  1. 2. html中使用ngModel实现双向绑定
  2. ```html
  3. <p>
  4. MVVM测试
  5. </p>
  6. <!-- 改变该输入框的值,绑定的后台title的值也会跟着改变 -->
  7. <input [(ngModel)]="title" />
  8. <br>
  9. <!-- 实时显示后台title变量的值 -->
  10. {{title}}
  11. <br>
  12. <button (click)='updateTitle()'>更新title</button>
  1. 在ts中定义title变量
    1. public title:string = '原来的title';
    2. updateTitle():void{
    3. this.title = '修改后的title';
    4. }