如何订阅Observable与另一个Observable合并?

如何订阅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'; 
+0

请阅读我的问题。我有这些进口 –

+0

对不起,似乎你解决了你的问题) –