Угловой метод не возвращается из оператора if - PullRequest
0 голосов
/ 03 октября 2019

Этот метод никогда не возвращает true. Даже если он отображает это истинное сообщение в консоли. Почему это поведение?

 purgeEmptyRows(obj: any) :Observable<boolean>  {
          let isEmpty = false;
          Object.keys(obj).forEach(key => {
          if( obj[key] != null) {
            if(typeof obj[key] != "object"){
            console.log("true");
              return Observable.of(true);
            }
          }else {
            isEmpty = false;
          }

          })
          return Observable.of(isEmpty);
    }

    }

Ответы [ 2 ]

1 голос
/ 03 октября 2019

Вы возвращаете Наблюдаемое с true внутри. Итак, у вас есть два варианта.

Первый вариант, измените функцию, чтобы она возвращала простой логический тип вместо наблюдаемого.

Второй вариант, подпишитесь на наблюдаемое вами возвращаемое.

Для первого варианта выполните следующие действия:

purgeEmptyRows(obj: any) :boolean  {
    let isEmpty = false;
    Object.keys(obj).forEach(key => {
        if( obj[key] != null) {
            if(typeof obj[key] != "object"){
                console.log("true");
                isEmpty = true;
            }
        } else {
            isEmpty = false;
        }

    });
    return isEmpty;
}

Для второго варианта вам все равно необходимо изменить код так:

purgeEmptyRows(obj: any) : Observable<boolean>  {
    let isEmpty = false;
    Object.keys(obj).forEach(key => {
        if( obj[key] != null) {
            if(typeof obj[key] != "object"){
                console.log("true");
                isEmpty = true;
            }
        } else {
            isEmpty = false;
        }

    });
    return Observable.of(isEmpty);
}

И затем, когда вы вызываете функцию, вы вызываете подписку на результат. Вот пример:

const obs = purgeEmptyRows(rows);
obs.subscribe(res => {
    console.log(res);
});
0 голосов
/ 03 октября 2019

Я думаю, причина в том, что вы не присваивали isEmpty внутри.

if(typeof obj[key] != "object"){
   console.log("true");
  return Observable.of(true);
}

Это должно выглядеть так

if(typeof obj[key] != "object"){
  isEmpty = true
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...