angular的學習高階 十七

2022-02-19 07:29:06 字數 4504 閱讀 1173

資料

export type shape = '1' | '2';

export type card = '3' | '4';

public shapes$ = new subject();

public cards$ = new subject();

zip(of(1),of(2)).subscribe(console.log)

ngoninit(): void

["1", "3"]

["2", "3"]

["1", "4"]

forkjoin(of(1),of(2)).subscribe(console.log)

[1,2]

ngoninit(): void

["1", "4"]

ngoninit(): void 

//  ["1", "3"]

// ["2", "3"]

// ["2", "3"]

// ["1", "3"]

// ["1", "4"]

[1, 2, 3, 1, 3]   of(1, 1, 2, 2, 3, 3, 1, 3, 3, 3).pipe(distinctuntilchanged(), toarray()).subscribe(console.log);

// [1, 2, 3, 1, 3]

of('a', 'a', 'b', 'c', 'd', 'd', 'e', 'f', 'g', 'g', 'h').pipe(

// 把前乙個字和後乙個值轉化成小寫,所以相同的就可以跳過

// c ,p 可以理解成前乙個值,後乙個值

distinctuntilchanged((c, p) => c.tolowercase() === p.tolowercase()),

toarray()

).subscribe(console.log);

//  ["a", "b", "c", "d", "e", "f", "g", "h"]

將對物件引用的比較,而不是物件屬性值得比較

from([obj,obj,obj]).pipe(distinctuntilchanged()).subscribe(console.log)

//

但是我們寫成函式進行判斷

from([,,

]).pipe(

distinctuntilchanged((p,n)=>),

).subscribe(console.log)

// //

from([,,

,,

]).pipe(

distinctuntilchanged(

(p,n)=>,/*第二個函式你可以理解成 c=>v.name

:{} 我差點蒙蔽了,其實就是做了typescript做的型別限制

*/(car:)=>car.name

),).subscribe(console.log)

// //

原始碼位址

官方用法位址

ng g d delayed/delayed-input
import  from '@angular/core';

import from 'rxjs';

import from 'rxjs/operators';

@directive()

export class delayedinputdirective implements oninit,ondestroy

ngoninit() :void

ngondestroy()

}

console.log((event.target as htmlinputelement).value);

}

let a = interval(1000).pipe(

tap(v => console.log('列印下'+v)),

take(5),

// 凍住

publish()

) as connectableobservablea.subscribe(res => , err => , () => );

// 解除

a.connect();

// 列印下0

// 0

// 列印下1

// 1

// 列印下2

// 2

// 列印下3

// 3

// 列印下4

// 4

// 再見

of(10).pipe(delaywhen(_=>timer(1000))).subscribe(res=>)

// 延遲傳遞值, 傳遞的引數是乙個函式,這種方法好像比較實用

let a=interval(1000).pipe(take(4))

let b=interval(1000).pipe(take(2))

zip(a,b).subscribe(console.log)

// [ 0, 0]

// [ 1, 1]

最小分母數

merge(a,b).subscribe(console.log)

// 0 兩次

// 1 兩次

// 1

// 2

// 3

concat(a,b).subscribe(console.log)

// 0

// 1

// 2

// 3

// 0

// 1

// 觀察每次狀態的改變

of(1,2,3,4,5).pipe(scan((acc,val)=>acc+val,0)).subscribe(console.log)

// 1

// 3

// 6

// 10

// 15

// 計算點選的次數

fromevent(this.ccc.nativeelement,'click').pipe(scan((acc,val)=>++acc,0)).subscribe(console.log)

of(1,2,3,4,5).pipe(max()).subscribe(console.log)

// 5

of(1,2,3,4,5).pipe(min()).subscribe(console.log)

// 1

of(1,2,3,4,5).pipe(reduce((acc,val)=>acc+val)).subscribe(console.log)

// 15

of(,).pipe(

reduce((acc,curr) => ())

).subscribe(console.log)

//

interval(200).pipe(

buffer(timer(1000))

).subscribe(console.log)

// [0,1,2,3]

//值發生一次

interval(1000).pipe(

buffer(interval(4000))

).subscribe(console.log)

// [0, 1, 2]

// [3, 4, 5, 6]

//  [7, 8, 9, 10]

// bufferwhen 引數函式 可以用陣列長度看相隔多少s點選一次

interval(1000).pipe(

bufferwhen(() => fromevent(this.ccc.nativeelement, 'click'))

).subscribe(console.log);

收集緩衝區並在指定數量的值後,作為陣列發出

const src$ = merge(

of(1).pipe(delay(1000)),

of(2).pipe(delay(4000)),

of(3).pipe(delay(5000)),

);src$.pipe(

buffercount(3)

).subscribe(console.log)

**********===

interval(1000).pipe(

buffercount(3)

).subscribe(console.log)

// [0,1,2]

// [3,4,5]

// [6,7,8]

前端高階之Angular

這段時間專案開發用到angular,深感js基礎不紮實導致的囫圇吞棗,為了高效的學習,記錄下一些經常用到的指令,服務。q file filereader file uploader ui select 通過 http 繫結外表來選擇 有乙個疑問 jquery angular s ui router ...

C 高階學習第十七天

2 fileinfo類 3 directory類 絕對路徑 string path users neworigion desktop a.txt 相對路徑 b.txt 當前目錄是當前程式生成的可執行檔案的目錄 file.create path file.delete path 對檔案內容的一種資料快...

Angular學習筆記 Angular生命週期

生命週期函式通俗的講就是元件建立 元件更新 元件銷毀的時候會觸發的一系列的方法。當 angular 使用建構函式新建乙個元件或指令後,就會按下面的順序在特定時刻呼叫這些生命週期鉤子方法。當 angular 使用建構函式新建乙個元件或指令後,就會按下面的順序在特定時刻呼叫這些生命週期鉤子方法 鉤子用途...