2017-11-17 7 views
1

私はlettable/pipeable functions in RxJSの紹介についてお伝えしていますが、これは連鎖したメソッドの潜在的な変更であるとは限りません。それはアップグレード後にエラーを投げ始めたところこれが私たちのsciptsのいずれかで私を捕まえ:RxJS 5.5エラー:テイクは関数ではありません。連鎖関数の問題

let things = new BehaviorSubject<Thing[]>([]); 
things.filter((things) => things.length > 0).take(1).subscribe(...) 

ERROR TypeError: tasks.filter(...).take is not a function

誰かが説明してもらえます/これが起こっている理由を説明する記事を指摘しますか?ところで、この修正はpipe()機能でtake(1)をラップすることでした:

things.filter((things) => things.length > 0).pipe(take(1)).subscribe(...) 

突然これを行うことを余儀なく午前、なぜ私はよく分からない..but。

+0

https://blog.angularindepth.com/rxjs-understanding-lettable-operators-fe74dda186d3 – Whisher

+0

https://github.com/ReactiveX/rxjs/blob/master/doc/lettable-operators.mdをご覧ください。 – martin

+0

'take()'をラップすると 'filter() 'に関連するエラーが修正されるのは面白いです –

答えて

1

角度5は、アプリのバンドル中に未使用のコードを削除するためのツリーシェイキング処理に役立つ文字テーブルオペレータを導入したRxJS 5.5をサポートしています。あなたは、例えば、「rxjs /事業者から事業者をインポートし、パラメータの可変数を取る関数pipe()にそれらをラップすることができます:

import { debounceTime, map} from 'rxjs/operators'; 
... 
let keyupValue$ = keyup$ 
    .pipe(
    debounceTime(500), 
    map(event => event['target'].value)) 
    .subscribe(val => this.doSomething(val)); 

私はより良い古い構文を好きでした。私はそれが急激な変化だとは思わない。 'rxjs/operators'からのインポートを使用しない場合は、古い構文をそのまま使用できます。

関連する問題