小编shi*_*les的帖子

rxjs/Observable:获取第一个流后运行一次函数(连续可观察)

首先,抱歉长标题.

我想订阅连续流与数组的forEachangularfire2,但我也想我已经证实后,第一组数据已经在运行一个函数:

this.people.forEach((person) => {
    person.items = this.database.list('/items' + person.key);
    person.items.subscribe((data) => {person.itemsList = data});
});

myIntendedFunction();
Run Code Online (Sandbox Code Playgroud)

有没有办法myIntendedFunction()这样:

  1. 它在data每个收到第一个流之后运行person,并且
  2. 它只运行一次?

observable rxjs angularfire2 angular

6
推荐指数
1
解决办法
6419
查看次数

React Hooks - 带有解构数组变量的 JSDoc

我正在尝试 JSDoc 一个简单的带有钩子的 React Typescript 组件。不幸的是,我似乎找不到使 JSDoc 与声明的解构数组一起工作的方法。有一些 与解构对象参数相关的答案,但这些对数组不起作用。

/**
 * @property {boolean} 0 - documentation for isLoading
 * @property {func} 1 - documentation for setIsLoading
 */
 const [isLoading, setIsLoading] = React.useState<boolean>(false);
Run Code Online (Sandbox Code Playgroud)

更新 1:仍然无法找到记录此解构的方法。有一个极端情况,如果我自定义键入一个对象,它会起作用:

export type AuthFormInput = {
  /** Value of the Email input field */
  email: string;
  /** Value of the Password input field */
  password: string;
};

const [form, setForm] = React.useState<AuthFormInput>({
  email: '',
  password: ''
});

...

// JSDoc will work here …
Run Code Online (Sandbox Code Playgroud)

typescript reactjs jsdoc3

6
推荐指数
3
解决办法
4517
查看次数

Angular2:*ngFor,AsyncPipe和index

此处的上一个问题中,我试图仅在两条消息之间发生更改时才显示日期.

不同之处在于我现在已经连接到实时数据库(Firebase),所以我订阅数据源并通过异步管道传递它,然后通过索引和*ngIf:

<div *ngFor='let message of (chat | async) ; let i = index'>
    <button *ngIf="i == 0 || (message.timestamp | date: 'ddMMMMyyyy') != ((chat | async)[i-1].timestamp | date: 'ddMMMMyyyy')">
        {{ message.timestamp | date:'ddMMM' }}
    </button>
    ...
    <!--More html elements below (omitted)-->
    ...
</div>
Run Code Online (Sandbox Code Playgroud)

这在我第一次加载视图时效果很好,但是,如果我将新条目推入chat,我会收到以下错误:

TypeError: Cannot read property '0' of null

也许我不太确定异步管道是如何工作的,但是当我尝试返回时{{ (chat | async).length }},它按预期工作.有关变通方法/正确练习的任何建议吗?

javascript firebase firebase-realtime-database ionic2 angular

4
推荐指数
2
解决办法
6406
查看次数