更新
似乎我从错误的地方导入了Observable ......这太混乱了,因为我有这句话import 'rxjs/add/observable/fromevent';
......
所以我改变了:
import { Observable } from 'rxjs/observable';
至:
import { Observable } from 'rxjs';
现在得到不同的错误:
错误类型错误:无效的事件目标
更新结束
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()});
}
}
在这里,我获得了一个按钮点击流,然后我希望它从get
方法合并到其他observable,但在url的末尾有随机数。因此,我的最终目标是在每次单击按钮时呈现不同的API用户列表。
HTML:
<button>Click</button>
<div *ngFor="let post of posts">
{{ post.login }}
</div>
控制台错误:
错误类型错误: WEBPACK_IMPORTED_MODULE_1_rxjs_observable .Observable.fromEvent不是函数
答案 0 :(得分:1)
对我所做的一切都没有完全确定,但似乎已经使用了:
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()});
}
}
答案 1 :(得分:0)
试试这个:
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/fromEvent';