Angular 5 Не удается прочитать свойство 'подписка' из неопределенного, когда я пытаюсь подписаться, который не является типом метода обслуживания - PullRequest
0 голосов
/ 24 февраля 2019

У меня есть такой метод, как

validatingUpdateBtn: boolean;

Validating(): Observable<boolean> {

    //Do some function

    if (this.validatingUpdateBtn) {
         return Observable.of(true).map(res => res);
    }
    else {
         return Observable.of(false).map(res => res);
    }
}

Теперь, как показано в методе ниже, я подписываюсь на метод выше.

handleSelection(){
    this.Validating().subscribe(
          (res) => {
            if (res) {
              //Do some work
            }else{
              //Do some work
            }
          }
        )
}

, но получаю Не удается прочитать свойство'подписка' из неопределенного когда я пытаюсь подписаться метод Validating () .

Не получается, что что-то идет не так?

Ответы [ 3 ]

0 голосов
/ 24 февраля 2019

Вам нечего map, поэтому удалите оператор map после of.Используйте оператор of от rxjs/observable/of, как показано ниже.

import { Observable, of } from 'rxjs';

  Validating(): Observable<any> {

    let res = this.validatingUpdateBtn ?  of(true) : of(false);
    return res;
  }

handleSelection(): void{

  this.Validating().subscribe( res => {
    if (res) {
      console.log(res);
    } else {
      console.log(res);
    }
  });
}

StackBlitz

0 голосов
/ 24 февраля 2019

Как мы выяснили с помощью @ Chandan YS , проблема заключалась в том, что текущий оператор if был внутри другой условной структуры, в данном случае оператор switch, а в каком-то конкретном сценарии выполнение не выполнялось.мы даже не пришли к тому if-else утверждению, которое возвращало наблюдаемые, и именно поэтому функция ничего не возвращала.

0 голосов
/ 24 февраля 2019

validatingUpdateBtn: boolean;

ValidatingFunction = () => {

    //Do some function

    if (this.validatingUpdateBtn) {
         return Observable.of(true).map(res => res);
    }
    else {
         return Observable.of(false).map(res => res);
    }
}

Validating = ValidatingFunction.asObservable();

Попробуйте, может быть, это работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...