タグ付けされた質問 「angular2-services」

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())部分は役に立たなくなりました。

4
EventEmitterの適切な使用法は何ですか?
ユーザーが自分のサービスでEventEmitterを使用するCustomHttp 内のAccess EventEmitter Serviceのような質問を読みましたが、このコメントで はそれを使用せず、代わりにObservablesを自分のサービスで使用するよう提案されました。 また、この質問を読ん で、ソリューションがEventEmitterを子に渡してサブスクライブすることを提案しています。 私の質問は次のとおりです:EventEmitterを手動でサブスクライブするべきか、それともサブスクライブしないのか?どのように使用すればよいですか?

3
Angular2:コンポーネントをレンダリングする前にデータを読み込む方法は?
コンポーネントがレンダリングされる前に、APIからイベントをロードしようとしています。現在、コンポーネントのngOnInit関数から呼び出すAPIサービスを使用しています。 私のEventRegisterコンポーネント: import {Component, OnInit, ElementRef} from "angular2/core"; import {ApiService} from "../../services/api.service"; import {EventModel} from '../../models/EventModel'; import {Router, ROUTER_DIRECTIVES, ROUTER_PROVIDERS, RouteConfig, RouteParams, RouterLink} from 'angular2/router'; import {FORM_PROVIDERS, FORM_DIRECTIVES, Control} from 'angular2/common'; @Component({ selector: "register", templateUrl: "/events/register" // provider array is added in parent component }) export class EventRegister implements OnInit …

14
Angular 2でシングルトンサービスを作成するにはどうすればよいですか?
ブートストラップ時に注入するとすべての子が同じインスタンスを共有するはずであると読みましたが、メインコンポーネントとヘッダーコンポーネント(メインアプリにはヘッダーコンポーネントとルーターアウトレットが含まれています)はそれぞれサービスの個別のインスタンスを取得しています。 私はFacebookのJavaScript APIを呼び出すために使用するFacebookServiceと、FacebookServiceを使用するUserServiceを持っています。これが私のブートストラップです: bootstrap(MainAppComponent, [ROUTER_PROVIDERS, UserService, FacebookService]); ログから、ブートストラップ呼び出しが終了したように見えます。その後、各コンストラクター、MainAppComponent、HeaderComponent、およびDefaultComponentのコードが実行される前に、FacebookServiceが作成され、次にUserServiceが作成されます。

7
Angular 2 TypeScript配列内の要素を見つける方法
コンポーネントとサービスがあります: 成分: export class WebUserProfileViewComponent { persons: Person []; personId: number; constructor( params: RouteParams, private personService: PersonService) { this.personId = params.get('id'); this.persons = this. personService.getPersons(); console.log(this.personId); } } コードスニペットを実行するHide resultsスニペットを展開 サービス: @Injectable() export class PersonService { getPersons(){ var persons: Person[] = [ {id: 1, firstName:'Hans', lastName:'Mustermann', email: 'mustermann@test.com', company:'Test', country:'DE'}, …

8
監視可能な配列の長さを確認する方法
私のAngular 2コンポーネントには、Observable配列があります list$: Observable<any[]>; 私のテンプレートには <div *ngIf="list$.length==0">No records found.</div> <div *ngIf="list$.length>0"> <ul> <li *ngFor="let item of list$ | async">item.name</li> </ul> </div> しかし、list $ .lengthは、Observable配列の場合には機能しません。 更新: それはそのようで長さは?。|(非同期リスト$を):私たちの長さを与えますが、コードの下に、まだ動作しません。 <div> Length: {{(list$ | async)?.length}} <div *ngIf="(list$ | async)?.length>0"> <ul> <li *ngFor="let item of (list$ | async)"> {{item.firstName}} </li> </ul> </div> </div> 誰でも私がObservable配列の長さをチェックする方法を教えてください。

2
Angular 2でのEventEmitter.next()とEventEmitter.emit()の違い
違いは何であるEventEmitter.emit()とはEventEmitter.next()?どちらもサブスクライブしたリスナーにイベントをディスパッチします。 export class MyService { @Output() someEvent$: EventEmitter<any> = new EventEmitter(); someFunc() { this.someEvent$.emit({myObj: true}); this.someEvent$.next({myObj: true}); } } 現在、EventEmitterのドキュメントはあまり役に立ちません。

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