私は、ウェブ開発が変わっているという事実に慣れてきており、私はRxJSを手に入れる必要があります。私は現在Angular 2.0.0-beta.15を使ってWebアプリケーションを開発中です。RxJS科目とAngular2科目
私は最も優れたng-book 2に従っています(この種の広告は許可されていますか?まあ)。広範で浅いストロークでRxJSのいくつかの重要な概念をカバーし、さらに読むためのリンクを提供しています。私はソースコードとそれに付随する説明を読んで理解しましたが、とりわけSubject
に関するいくつかの詳細とAngular 2コンポーネントがこれらのSubjectストリームをどのように消費するかについて暗闇の中に少し残しています。
私は以下のようなものを本からコードを増強しています
export class SubmitResourceComponent {
private _newResourceTags: Subject<Tag> = new Subject<Tag>();
private _resourceTags: Observable<Tag[]>;
private _tagUpdates: Subject<any> = new Subject<any>();
private _create: Subject<Tag> = new Subject<Tag>();
private _remove: Subject<Tag> = new Subject<Tag>();
constructor() {
this._resourceTags = this._tagUpdates
.scan((tags: Tag[], operation: ITagsOperation) => operation(tags), initialTags);
this._create
.map((tag: Tag): ITagsOperation => (tags: Tag[]) => _.uniq(tags.concat(tag)))
.subscribe(this._tagUpdates);
this._remove
.map((tag: Tag): ITagsOperation => (tags: Tag[]) => _.without(tags, tag))
.subscribe(this._tagUpdates);
this._newResourceTags.subscribe(this._create);
}
get resourceTags(): Observable<Tag[]> {
return this._resourceTags;
}
protected addTagToResource(tag: Tag): void {
this._create.next(tag);
}
protected removeTagFromResource(tag: Tag): void {
this._remove.next(tag);
}
}
をそして私はこのような_resourceTags
を消費しています:
<button class="btn" *ngFor="#tag of resourceTags | async" (click)="removeTagFromResource(tag)">{{ tag.name }}</button>
私もの優れたサポートと、把握することはできませんどのようなgitter forumsは、UIが_resourceTags
Subject
にプッシュされたすべてのタグを表示する理由です。私はストリームがゴムパイプのようなものだと思います。一旦要素がSubject
にプッシュされ、Observer
(この場合はUI要素)に公開されると、蒸発して消えませんか?それはストリーム/パイプ/ Subject
に残りますか? UIエレメントはSubject
にどのように登録されていますか?私は間違った方法でそれについて考えていますか?私は完全な精神的なリストラ/移植が必要ですか?
多くの質問があります。
、あなたがにリンクする必要があります['scan'](http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-scan)のRxJS 5ドキュメント。 – Dorus
Ok、完了です。ヒントをありがとう。 –
"With | async AngularはObservable(Subject)にサブスクライブし、値を受け取ると表示します。 - 「コレクション」が変更されるたびに、タグを追加または削除することによって、すべてのタグがAngularコンポーネントにプッシュされると仮定していますが、そうですか?そうしないと、タグを削除できず、このコードが正しく機能しています。私は、副作用がいつ発生しているのか、そしてコレクションが何をしているのかを正確に見るために、たくさんのログを作成する必要があると思います。 – serlingpa