0
我是Angular 2的新手,所以這可能非常簡單。我一直在搜索Google,但沒有運氣。我是從火力地堡使用AF2然後試圖過濾列表只是1.我覺得我的代碼顯示了我試圖拉球員數據......AngularFire2後續過濾器不會過濾列表
玩家fb.service.ts
import { Injectable } from '@angular/core';
import { AngularFire, FirebaseListObservable, FirebaseObjectObservable } from 'angularfire2';
import { Subject } from 'rxjs/Subject';
@Injectable()
export class PlayerFbService {
players$: FirebaseListObservable<any[]>;
player$: FirebaseObjectObservable<any>;
constructor(private af: AngularFire) {
this.players$ = this.af.database.list('/player');
this.players$.subscribe(
val => {
console.log('players$', val);
}
);
}
filterByHandle(handle: string) {
const handleSubject = new Subject();
this.players$ = this.af.database.list('/player', {
query: {
orderByChild: 'handle',
equalTo: handleSubject
}
});
handleSubject.next(handle);
}
}
該服務的作品,我看到我的初始名單中的2名球員,但是當我點擊按鈕,沒有任何反應。代碼被def調用,並且發送的句柄是列表中的句柄值之一,但列表保持不變。不用找了。
我錯過了什麼?
編輯:
這裏是我的調用該服務的組件模板...
player.component.html
<ul>
<li *ngFor="let player of players$ | async">
{{ player | json }}
</li>
</ul>
<button (click)="filterByHandle('professorkill')">Filter</button>
player.component.ts
import { Component, OnInit } from '@angular/core';
import { PlayerFbService } from './../../service/fb/player-fb.service';
import { FirebaseListObservable } from 'angularfire2';
@Component({
selector: 'app-player',
templateUrl: './player.component.html',
styleUrls: ['./player.component.css']
})
export class PlayerComponent implements OnInit {
players$: FirebaseListObservable<any[]>;
constructor(private playerService: PlayerFbService) {
this.players$ = this.playerService.players$;
}
filterByHandle(handle: string) {
this.playerService.filterByHandle(handle);
}
ngOnInit() {
}
}
此代碼塊有點混淆,您是否試圖在調用filterByHandle()方法時過濾可觀察數據中的數據? –
@DevonGermano正確:-) – Locohost
您想過濾/播放的是firebase中的列表嗎?或/玩家? –