Angular学习笔记(十一)之响应式编程基础

观察者模式概念

观察者模式以及在RXJS中对应的概念和代码样例
这里写图片描述

响应式编程概念

异步数据流编程,可以创建任何事件流。

一个简单的响应式编程demo

观察流(数组),选出偶数流,计算平方,打印出来

//app.module
import { FormsModule } from '@angular/forms';
imports: [
   FormsModule
]

//bind.component.ts
import { Observable } from 'rxjs';

var subscription = Observable.from([1,2,3,4])
.filter((e)=>e%2==0)
.map((e)=>e*e)
.subscribe(
    e => console.log(e),
    error => console.error(error),
    () => console.log("结束啦!")
)

在上方例子中:

流可以做以下操作
- 发射元素,类型取决于流源头,在这是一个number类型的数组
- 抛出异常
- 发射结束信号

对应的观察者也可以做出以下操作
- 处理流中发射的元素
- 处理流中的异常
- 流结束时调用函数

模版本地变量 #

//html:
<input type="text" (keyup)="onKey($event)">
//ts:
onKey(event){
    console.log(event.target.value);
}

event.target指向发射事件的HTML元素,而其实,在Angular模版中可以使用本地变量”#” 获得发射事件HTML元素

//html:
<input type="text" #myfile (keyup)="onKey(myfile.value)">
//ts:
onKey(value){
  console.log(value);
}

也就是 $event.target 可以用 #myfile来代替

响应式编程事件处理

  • Angular新思路:将事件作为永不结束的流
  • FormControl,来自RectiveFormsModule,代表表单元素,表单元素改变时触发valueChange事件,组成可订阅流

写一个输入框,当输入文字暂停500毫秒时,会触发事件打印出输入的文字

//app.module.ts
import { FormsModule,ReactiveFormsModule } from '@angular/forms';
imports: [
  FormsModule,
  ReactiveFormsModule
]
//html:
<input [formControl]="searchInput">
//[formControl] 表单指令
//searchInput 实例化的FormControl对象,其valueChange可组成订阅流

//ts:
import { FormControl } from '@angular/forms';
import 'rxjs/Rx';

searchInput:FormControl = new FormControl();
ngOnInit() {
    this.searchInput.valueChanges
        .debounceTime(500)
        .subscribe(
            e => this.getStock(e)
    )
}
getStock(value){
  console.log('查找:'+value);
}

Tips:使用FormControl时,需要在modlue同时导入FormsModule和ReactiveFormsModule从@angular/forms模块

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值