タグ付けされた質問 「rxjs」

JavaScript用のReactive Extensions(RxJS)は、監視可能なコレクションとArray Extrasスタイルの構成を使用して、非同期およびイベントベースのプログラムを構成するための一連のライブラリです。


21
Angular / RxJs `Subscription`からの退会のタイミング
NgOnDestroyライフサイクル中にSubscriptionインスタンスを保存して呼び出す必要があるのunsubscribe()はいつですか。 すべてのサブスクリプションを保存すると、コンポーネントコードに多くの混乱が生じます。 HTTPクライアントガイドは、次のようなサブスクリプションを無視します。 getHeroes() { this.heroService.getHeroes() .subscribe( heroes => this.heroes = heroes, error => this.errorMessage = <any>error); } 同時に、Route&Navigation Guideによると: 最終的には、別の場所に移動します。ルーターはこのコンポーネントをDOMから削除して破棄します。それが起こる前に、私たちは自分自身を片付ける必要があります。具体的には、Angularがコンポーネントを破棄する前にサブスクライブを解除する必要があります。そうしないと、メモリリークが発生する可能性があります。 メソッドObservable内のサブスクライブを解除しますngOnDestroy。 private sub: any; ngOnInit() { this.sub = this.route.params.subscribe(params => { let id = +params['id']; // (+) converts string 'id' to a number this.service.getHero(id).then(hero => this.hero = hero); }); …

9
BehaviorSubjectとObservable?
Angular RxJsパターンを調べていますが、a BehaviorSubjectとの違いがわかりませんObservable。 私の理解では、a BehaviorSubjectは時間とともに変化する可能性がある値です(サブスクライブでき、サブスクライバーは更新された結果を受け取ることができます)。これはとまったく同じ目的のようObservableです。 いつObservablevs を使用しBehaviorSubjectますか?BehaviorSubject以上を使用するメリットはありますObservableか、またはその逆ですか?

19
TypeScriptエラーを伴うAngular HTTP GET http.get(…).mapは[null]の関数ではありません
AngularのHTTPに問題があります。 私はちょうどにしたいリストビューで表示されます。GETJSON サービスクラス import {Injectable} from "angular2/core"; import {Hall} from "./hall"; import {Http} from "angular2/http"; @Injectable() export class HallService { public http:Http; public static PATH:string = 'app/backend/' constructor(http:Http) { this.http=http; } getHalls() { return this.http.get(HallService.PATH + 'hall.json').map((res:Response) => res.json()); } } そして、HallListComponent私getHallsはサービスからメソッドを呼び出します: export class HallListComponent implements OnInit { public halls:Hall[]; …
334 angular  rxjs 

21
RxJ 5でAngular Httpネットワークコールの結果を共有する正しい方法は何ですか?
Httpを使用して、ネットワークコールを実行し、httpオブザーバブルを返すメソッドを呼び出します。 getCustomer() { return this.http.get('/someUrl').map(res => res.json()); } このオブザーバブルを取得して複数のサブスクライバーを追加すると、次のようになります。 let network$ = getCustomer(); let subscriber1 = network$.subscribe(...); let subscriber2 = network$.subscribe(...); 私たちがしたいことは、これが複数のネットワーク要求を引き起こさないことを確認することです。 これは珍しいシナリオのように見えるかもしれませんが、実際には非常に一般的です。たとえば、呼び出し元がオブザーバブルをサブスクライブしてエラーメッセージを表示し、非同期パイプを使用してそれをテンプレートに渡す場合、すでに2つのサブスクライバーがあります。 RxJs 5でそれを行う正しい方法は何ですか? つまり、これは正常に動作するようです: getCustomer() { return this.http.get('/someUrl').map(res => res.json()).share(); } しかし、これはRxJ 5でこれを行う慣用的な方法ですか、それとも代わりに何か他のことをする必要がありますか? 注:Angular 5 newに従って、JSON結果がデフォルトで想定されるようになったため、すべての例HttpClientの.map(res => res.json())部分は役に立たなくなりました。


6
プロミスを観察可能なものに変換
オブザーバブルに頭を抱えようとしています。オブザーバブルが開発と可読性の問題を解決する方法が大好きです。私が読んだように、利益は計り知れません。 HTTPおよびコレクションのオブザーバブルは簡単なようです。このようなものを観測可能なパターンに変換するにはどうすればよいですか。 これは、認証を提供するための私のサービスコンポーネントからのものです。これは、Angular2の他のHTTPサービスのように機能することを好みます-データ、エラー、および完了ハンドラーをサポートします。 firebase.auth().createUserWithEmailAndPassword(email, password) .then(function(firebaseUser) { // do something to update your UI component // pass user object to UI component }) .catch(function(error) { // Handle Errors here. var errorCode = error.code; var errorMessage = error.message; // ... }); ここでどんな助けもいただければ幸いです。私が持っていた唯一の代替ソリューションは、EventEmitters を作成することでした。しかし、それはサービスセクションで物事を行うためのひどい方法だと思います


10
RxJS SubjectまたはObservableの現在の値を取得するにはどうすればよいですか?
Angular 2サービスがあります。 import {Storage} from './storage'; import {Injectable} from 'angular2/core'; import {Subject} from 'rxjs/Subject'; @Injectable() export class SessionStorage extends Storage { private _isLoggedInSource = new Subject<boolean>(); isLoggedIn = this._isLoggedInSource.asObservable(); constructor() { super('session'); } setIsLoggedIn(value: boolean) { this.setItem('_isLoggedIn', value, () => { this._isLoggedInSource.next(value); }); } } すべてがうまくいきます。しかし、サブスクライブする必要のない別のコンポーネントがあります。特定の時点でisLoggedInの現在の値を取得する必要があるだけです。これどうやってするの?
207 javascript  angular  rxjs 

16
Angular 2 beta.17:プロパティ 'map'はタイプ 'Observable <Response>'に存在しません
Angular 2 beta16からbeta17にアップグレードしたところ、rxjs 5.0.0-beta.6が必要になりました。(変更ログはこちら:https : //github.com/angular/angular/blob/master/CHANGELOG.md#200-beta17-2016-04-28)beta16では、Observable / map機能に関してすべてがうまく機能していました。アップグレード後に次のエラーが表示され、typescriptがトランスパイルしようとすると発生します。 プロパティ 'map'はタイプ 'Observable'に存在しません(私がObservableでマップを使用した場所) c:/path/node_modules/rxjs/add/operator/map.d.ts(2,16):エラーTS2435:アンビエントモジュールを他のモジュールまたは名前空間にネストすることはできません。 c:/path/node_modules/rxjs/add/operator/map.d.ts(2,16):エラーTS2436:アンビエントモジュールの宣言で相対モジュール名を指定できません。 私はこの質問/回答を見ましたが、それは問題を解決しません: Angular2 beta.12とRxJs 5 beta.3で観察可能なエラー 私のappBoot.tsは次のようになります(すでにrxjs / mapを参照しています): ///&lt;reference path="./../node_modules/angular2/typings/browser.d.ts"/&gt; import {bootstrap} from "angular2/platform/browser"; import {ROUTER_PROVIDERS} from 'angular2/router'; import {HTTP_PROVIDERS} from 'angular2/http'; [stuff] import 'rxjs/add/operator/map'; import 'rxjs/add/operator/toPromise'; import {enableProdMode} from 'angular2/core'; import { Title } from 'angular2/platform/browser'; …
195 typescript  angular  rxjs 

19
Observable.ofは関数ではありません
Observable.ofプロジェクトのインポート機能に問題があります。私のIntellijはすべてを見ています。私のコードでは: import {Observable} from 'rxjs/Observable'; そして私のコードではそれをそのように使用します: return Observable.of(res); 何か案は?
189 angular  rxjs 

6
ワンタイムサブスクリプションを作成する
Observable最初に呼び出されたときにすぐに破棄されるへのサブスクリプションを作成する必要があります。 次のようなものはありますか: observable.subscribeOnce(func); 私の使用例では、エクスプレスルートハンドラーでサブスクリプションを作成し、サブスクリプションがリクエストごとに複数回呼び出されています。
182 rxjs 

3
Angular2 http.get()、map()、subscribe()および観察可能なパターン-基本的な理解
これで、3つのリンクがある最初のページができました。最後の「友達」リンクをクリックすると、適切な友達コンポーネントが開始されます。そこで、friends.jsonファイルに保存されている友達のリストを取得/取得したいと思います。今までのところ、すべてが正常に動作します。しかし、私はまだRxJのオブザーバブル、マップ、サブスクライブの概念を使用するangular2のHTTPサービスの初心者です。私はそれを理解しようとしていくつかの記事を読みましたが、実際の作業に入るまで、それらの概念を適切に理解するつもりはありません。 ここで私はすでにHTTP関連の仕事を除いて働いているplnkrを作りました。 Plnkr myfriends.ts import {Component,View,CORE_DIRECTIVES} from 'angular2/core'; import {Http, Response,HTTP_PROVIDERS} from 'angular2/http'; import 'rxjs/Rx'; @Component({ template: ` &lt;h1&gt;My Friends&lt;/h1&gt; &lt;ul&gt; &lt;li *ngFor="#frnd of result"&gt; {{frnd.name}} is {{frnd.age}} years old. &lt;/li&gt; &lt;/ul&gt; `, directive:[CORE_DIRECTIVES] }) export class FriendsList{ result:Array&lt;Object&gt;; constructor(http: Http) { console.log("Friends are being called"); // below code is …
170 http  angular  rxjs 

11
空のObservableを返す
関数more()はObservablegetリクエストからを返すことになっています export class Collection{ public more = (): Observable&lt;Response&gt; =&gt; { if (this.hasMore()) { return this.fetch(); } else{ // return empty observable } } private fetch = (): Observable&lt;Response&gt; =&gt; { return this.http.get('some-url').map( (res) =&gt; { return res.json(); } ); } } この場合hasMore()、trueの場合にのみリクエストを実行できます。それ以外の場合、subscribe()function subscribe is not definedでエラーが発生します。空のオブザーバブルを返すにはどうすればよいですか? this.collection.more().subscribe( (res) =&gt;{ …

14
Angular-「エクスポートされたメンバー 'Observable'はありません」
Typescriptコード: import { Injectable } from '@angular/core'; import { Observable } from 'rxjs/Observable'; import { of } from 'rxjs/observable/of'; import { Hero } from './hero'; import { HEROES } from './mock-heroes'; @Injectable({ providedIn: 'root' }) export class HeroService { constructor() { } getHeroes(): Observable&lt;Hero[]&gt; { return of(HEROES); } } エラー情報: …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.