我想仅在当前用户是我使用checkGuest(event.$key)
<md-card class="home-card" *ngFor="let event of events | async">
<a *ngIf="checkGuest(event.$key)" [routerLink]="['event', event.$key]">
<img class="event-home-img" src="https://lorempixel.com/300/300" />
<p class="home-page-title">{{ event.name }}</p>
<p class="home-page-venue">{{venueName}}</p>
</a>
</md-card>
Firebase列表eventsGuestsLookup
如下所示:
{
"uid1" : {
"-Ktm57w59Q_2c48r6ntx" : true,
},
"uid2" : {
"-KtmbLqT0U005Ndelw3S" : true,
"-KtmcLr44X0ho1NZP_h_" : true,
"-KtmdP2BKzhwezxa-Lbl" : true,
"-KtoGScCD7Zq4N3KkQQG" : true
}
}
this.uid
是uid2
而eventKey
是-Ktm57w59Q_2c48r6ntx
一个事件密钥,甚至不在uid2
列表中。我希望this.hello
返回false,但是数据库中唯一的事件是为用户uid2
显示的......我做错了什么?
checkGuest(eventKey: string): Observable<Boolean> {
const event = this.db.object(`eventsGuestsLookup/${this.uid}/${eventKey}`);
return event.map(e => this.hello(e));
}
hello(e): Boolean {
if (e) {
return true;
}
return false;
}
答案 0 :(得分:0)
答案 1 :(得分:0)
您正在使用Boolean
对象而不是boolean
原语。这可能是问题吗?
编辑/更新(2017年9月13日):
我根本没有使用过angularfire
,但是从您的代码看起来,您的ngIf
谓词函数checkGuest()
正在返回FirebaseObjectObservable<boolean>
我认为可能是truthy
- 始终不管其boolean
值(因为它被包装为可观察的)。
我认为如果您将checkGuest()
方法改为此
checkGuest(eventKey: string): boolean {
return this.db.object(`eventsGuestsLookup/${this.uid}/${eventKey}`)
.subscribe((e) => this.hello(e.$value));
}
它可能会奏效。如果你还在寻找答案,试试吧。