Observable <boolean>不起作用

时间:2018-07-03 14:26:51

标签: angular typescript firebase rxjs6

有人可以帮我吗,因为我被此功能所困扰,但在应用程序中非常重要。

打字稿文件

get $approved(): Observable<boolean> {
  return this.$entries.map(entries => {
    if (entries.length > 0) {
      return false;
    } else {
      entries.every(entry => {
        return entry.approved != null;
      })
    }
  });
}

HTML文件

<h1 *ngIf="$approved | async">PLANT</h1>

问题是,它永远不会显示H1标签。而且我不知道为什么不这样做。

3 个答案:

答案 0 :(得分:0)

您的else块从不返回任何内容,因此该方法仅返回两者都是虚假的falseundefined。更新代码以返回every的结果:

return entries.every(entry => {
  return entry.approved != null;
});

答案 1 :(得分:0)

如果在上面的代码中该值为true,则永远不会真正返回该值。在else块中,您可能需要:

<Switch>..</Switch>

答案 2 :(得分:0)

您在此处未正确返回值:

entries.every(entry =>{ return entry.approved != null; })

尝试这样的事情:

let result = false;
entries.every(entry =>{
  if (!result) result = (entry.approved != null) ? entry.approved : false;
});
return result;

未将回调内的return语句复制为外部方法的返回。闭包不适用于返回值。外部方法必须具有return语句。