Наблюдаемый <boolean>не работает - PullRequest
0 голосов
/ 03 июля 2018

Может ли кто-нибудь мне помочь, потому что я застрял в этой функции, но очень важен в приложении.

Машинописный файл

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 голосов
/ 03 июля 2018

Вы никогда не вернете значение, если оно истинно в приведенном выше коде. В блоке else вы, вероятно, захотите:

return entries.every(entry => {
  return entry.approved != null;
});
0 голосов
/ 03 июля 2018

Вы не возвращаете значение правильно здесь:

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.

0 голосов
/ 03 июля 2018

Ваш блок else никогда не возвращает ничего, поэтому метод всегда возвращает только false или undefined, которые оба являются ложными. Обновите свой код, чтобы получить результат every:

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