angular 学习笔记

424 阅读1分钟

1.tslint 设置 代码风格  在'./tslint.json’中找到要修改的配置文件,将其添加到‘src/tslint.json’文件中(或者直接在‘./tslint.json’中修改)

2.绑定数据类型: 分为插值表达式 {{}}  属性绑定 [herf]="url" 事件绑定(click)="add($event)"。

3. 双向数据绑定: [(ngModel)]="{{xxx}}"

4 属性型指令 

[ngClass]="classList"  //通过布尔值控制,同时操作多个class类
classList{
    redColor:true,
    fz:false
}

.redColor{
    fontSize:16px;
}
.fz{    color:red;
}

[class.test]="isTest" //添加或者移除一个类 
isTest = "true"
.test{
    color:red;
}


内嵌样式
[ngStyle]="styleList"
styleList={
    color:red,
    fontSize:16px
}
[style.fontSize]="fz"
fz=60px

*ngIf  [class.hidden] 隐藏元素区别 前者删除dom元素,后者通过css display 隐藏,页面可见相应dom元素


*ngFor="let item of colors ; let i=index ; let odd=odd"
*ngFor循环会提供出一个index 但是index不能直接用,要赋值一个变量才可以用
ngFor循环默认得到odd 奇数, 当index值为奇数时,odd 为false
*ngFor 指令添加trackBy 提升渲染性能:
当被循环的是一个对象时需要添加 不加的话 当某一项key value 变化的话所有dom元素会全部渲染
当循环的是数组的话,不需要加trackBy,只有被修改的Item 会被重新渲染,其他元素不重新渲染
*ngFor="let item of colors ; let i=index; let trackBy="trackById"
 trackById(index,item){
    return item.id
}
 colors={    color:red,
    fontSize:16px
}

todos 案例学习

任务展示 *ngFor  trackBy

添加功能 [(ngModel)]   需要做非空判断  导入FormMoulde 模块

删除功能   给文本框添加事件 使用filter 过滤删除 相应项

状态切换  添加点击事件 -- 获取 id ---find 找到相应的项 对其状态字段取反

angular 数据改变视图会自动更新

todos 案例升级

1) 对功能进行拆分 组件化

2)父组件传数据给子组件

父  skill="parentData"  传递一个字符串  [skill]="parentData" //传入一个动态的数据  import Input  
    @input() skill  装饰器公开接收父组件传递给子组件的属性
    html 模板中应用 

3)子组件给父组件传递数据

import Output  EventEmitter from angular/core
    @Output() getMoney = new EventEmitter()
    当点击事件触发的时候 
    this.getMoney.emit("孩子传递数据给父亲")
父 html 子组件调用位置  (getMoney) = setMoney($event)
    Js setMoney(data){
        console.log(data)            
        }