javascript - 如何在模板中运行可观察函数?

标签 javascript angular firebase rxjs observable

我有显示离线和在线用户的状态服务

 // Presence Service
 getPresence(uid: string) {
    return this.db.object(`status/${uid}`).valueChanges();
 }

在组件模板中,我可以这样运行并获取在线用户

<div *ngIf="presence$ | async as presence" 
    class="tag is-large" 
    [ngClass]="{ 'is-success':  presence.status  === 'online',
                 'is-warning': presence.status  === 'away',
                 'is-danger':  presence.status  === 'offline'
                 }"
>{{ presence.status }}</div>

但我想在模板中使用 getPresence(uid: string) 函数,如下所示:

<div *ngIf="presence.getPresence('CdceTHTS5we4TRsbYE7z8bDiZbx1') | async"
    class="tag is-large" 
    [ngClass]="{ 'is-success':  presence?.status  === 'online',
                 'is-warning': presence?.status  === 'away',
                 'is-danger':  presence?.status  === 'offline'
}">dffhghhhh</div>

什么都没发生。我如何在模板中使用此可观察函数 getPresence(uid: string)

最佳答案

您需要在您的组件上公开可观察到的presence$。您可以执行以下操作:

export class MyComponent {
    presence$ = this.presenceService.getPresence("myteamId");

    constructor(private presenceService: PresenceService) {}
}

如果您以这种方式在您的组件类上公开可观察对象,您的第一个模板应该可以工作。

关于javascript - 如何在模板中运行可观察函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58707146/

相关文章:

javascript - 如何在初始化后更新 View ,但不使用 didInsertElement() ?

node.js - Firebase Firestore 事务处理极其缓慢(3-4 分钟)

javascript - 为什么我会获得这种奇怪的行为,试图为拖动到 PrimeNG FullCalendar 组件中的不同事件类型使用不同的颜色?

node.js - 如何从云功能访问 firebase 存储中的特定文件夹?

firebase - 无需 key 即可获取数据。只有关于子节点的信息

javascript - 每次 url hash 改变时执行 if 语句

javascript - 选择焦点文本时的小错误

javascript - 如何获取最后一个包含某个元素的数组?

angular - 更改查询参数 - 页面滚动顶部,Angular

Angular - 如何防止具有依赖可观察量的嵌套管道?