angular相关知识分享
resolve的使用
1、定义
1 | 官方定义:一个接口,某些类可以实现它以扮演一个数据提供者 |
2、创建resolve
index-resolve.service.ts
1 | import { Resolve } from '@angular/router'; |
3、使用
Index-routing.module.ts
1 | import { IndexResolveService } from 'index-resolve.service.ts'; |
Index.component.ts
1 | import { ActivatedRoute } from '@angular/router'; |
4、操作符
map
- 定义
1
2定义:将给定的project函数应用于源Observable发出的每个值,并将结果值作为Observable发出
解释:跟array的map类似,可以对里面的值进行操作,然后以Observable发射出去
使用
1
2
3
4
5
6import { map } from 'rxjs/internal/operators';
this.indexService.getData().pipe(
map((res)=>{
return xxx;
})
)
forkJoin,zip
- 定义
1
2
3
4
5forkJoin定义:当所有可观测值完成时,从每个可观测值发出最后一个(最新)发出的值
解释:类似promise.all,当所有的Observable流结束后,发出每个流的最后一个发出的值
zip定义:当每个传入的可观测值第一次完毕时,合并流然后发出去,当每个传入的可观测值第二次、第三次...完毕时,又分别合并发出去
解释:跟forkJoin一样都是合并流发出,但是zip会根据流本身发出的次数多次发出,而forkJoin仅发射最后一次- 使用
1
2
3
4
5
6
7import { forkJoin } from 'rxjs';
resolve(): Observable<any>{
return forkJoin([
this.indexService.getData(),
this.indexService.getData1()
])
}first,last,take
- 定义
1
2
3
4
5
6
7
8fitst定义:只发出由源Observable所发出的值中第一个(或第一个满足条件的值)
解释:在所有的流中取每个流第一次发出的值后结束
last定义:只发出由源Observable所发出的值中最后一个
解释:在所有的流中取每个流最后一次发出的值后结束
take定义:只发出由源Observable所发出的值中最初发出的n个值
解释:在所有的流中取每个流最初发出的n个值后结束- 使用
1
2
3
4
5
6
7
8import { first } from 'rxjs/internal/operators';
import { forkJoin } from 'rxjs';
resolve(): Observable<any>{
return forkJoin([
this.indexService.getData(),
this.indexService.getData1()
]).pipe(first())
}
pipe的使用
1、创建pipe
index.pipe.ts
1 | import { Pipe, PipeTransform } from '@angular/core'; |
2、使用
index.module.ts
1 | import { IndexPipe } from 'index.pipe.ts'; |
index.component.html
1 | <div> |
ngrx的使用
1、安装
1 | npm i @ngrx/store -S |
2、创建动作action
animal.action.ts
1 | import { createAction, props, Action } from '@ngrx/store'; |
3、创建减速器reducer
animal.reducer.ts
1 | import { createReducer } from '@ngrx/store'; |
4、创建state
animal.state.ts
1 | import { Animal } from 'animal.model.ts'; // {name: string; age: number} |
5、使用
app.module.ts
1 | import { NgModule } from '@angular/core'; |
create.component.ts
1 | import { Obserbable } from 'rxjs'; |