0
저는 Angular 2를 처음 사용하기 때문에 이것은 매우 간단합니다. 나는 운이없는 동안 잠시 인터넷 검색을 해왔다. 나는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);
}
}
... 난 내 코드는 내가 시도하고있는 무슨이다 생각 만 1. 목록을 필터링하려고 다음 AF2를 사용하여 중포 기지에서 플레이어 데이터를 당기는 해요
서비스가 작동하지만 초기 플레이어 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 Correct :-) – Locohost
필터/플레이어를 원하는 firebase의 목록입니까? 아니면/선수들? –