如何订阅Observable与另一个Observable合并?
问题描述:
UPDATE:如何订阅Observable与另一个Observable合并?
看来我进口可观察到从错误的地方......那是如此混乱,是因为我有这个说法import 'rxjs/add/observable/fromevent';
...
所以我改变来自: import { Observable } from 'rxjs/observable';
要: import { Observable } from 'rxjs';
现在得到不同的错误:
更新 的ERROR TypeError: Invalid event target
末
export class AppComponent {
@ViewChild('b') button;
posts: any[];
clickStream$: Observable<any>;
constructor(http: Http){
this.clickStream$ = Observable.fromEvent(this.button, 'click').mergeMap(
() => {
var randomOffset = Math.floor(Math.random() * 500);
return http.get('https://api.github.com/users?since=' + randomOffset);
});
}
ngOnInit() {
this.clickStream$.subscribe(res => { this.posts = res.json()});
}
}
在这里,我得到按钮点击流,那么我希望它在URL的末尾合并其他可观察从get
的方法,但随机数。所以我的最终目标是每次单击按钮时呈现不同的API用户列表。
HTML:
<button>Click</button>
<div *ngFor="let post of posts">
{{ post.login }}
</div>
控制台错误:
ERROR TypeError: WEBPACK_IMPORTED_MODULE_1_rxjs_observable.Observable.fromEvent is not a function
答
不completally确定的事情我做了,但似乎做它的工作:
import { Component, ViewEncapsulation, OnInit, OnChanges, SimpleChanges, ViewChild, ElementRef } from '@angular/core';
import { initializeApp, database } from 'firebase';
import { Observable } from 'rxjs';
import { Http } from '@angular/http';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
@ViewChild('b') button: ElementRef;
posts: any[];
clickStream$: Observable<any>;
constructor(private http: Http){
}
ngOnInit() {
this.clickStream$ = Observable.fromEvent(this.button.nativeElement, 'click').mergeMap(
() => {
var randomOffset = Math.floor(Math.random() * 500);
return this.http.get('https://api.github.com/users?since=' + randomOffset);
});
this.clickStream$.subscribe(res => { this.posts = res.json()});
}
}
答
试试这个:
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/fromEvent';
请阅读我的问题。我有这些进口 –
对不起,似乎你解决了你的问题) –