Angular 角度5无法读取属性';订阅';当我尝试订阅非服务方法类型时的未定义

Angular 角度5无法读取属性';订阅';当我尝试订阅非服务方法类型时的未定义,angular,typescript,angular2-observables,Angular,Typescript,Angular2 Observables,我有一个方法 validatingUpdateBtn: boolean; Validating(): Observable<boolean> { //Do some function if (this.validatingUpdateBtn) { return Observable.of(true).map(res => res); } else { return Observable.of(false)

我有一个方法

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);
    }
}
但是当我试图订阅验证()方法时,我无法读取未定义的的属性“subscribe”


我没有发现哪里出了问题?

验证更新btn: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();

试试这个,可能是工作

验证更新btn: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();

试试这个可能是工作

你没有任何东西可以
映射
,因此在的
之后删除
映射
操作符。使用
rxjs/observable/of
中的
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);
    }
  });
}
import{Observable,of}来自'rxjs';

Validating():Observable

您无需
映射
,因此在
之后删除
映射
操作符。使用
rxjs/observable/of
中的
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);
    }
  });
}
import{Observable,of}来自'rxjs';

Validating():Observable

正如我们在@Chandan Y S中发现的那样,问题是当前的
如果
语句位于另一个条件结构中,在本例中是
开关
语句,在某些特定场景中,执行甚至没有到达返回可观察值的
if-else
语句,这就是函数没有返回任何内容的原因。

正如我们在@Chandan Y S中发现的,问题是当前的
如果
语句在另一个条件结构中,在本例中,
switch
语句,在某些特定场景中,执行甚至没有到达返回可观察值的
if-else
语句,这就是函数没有返回任何内容的原因。

您能说明如何调用
handleSelection()
方法吗?在函数
Validating()
中,您之前是否有任何
return
s?@AmirArbabian handleSelection()在ngOnInit()中直接调用,第二个问题呢?没有!因此,问题可能在于,您发布的
if
块中的可观察对象已经位于其他类似
开关的内部<代码>案例
或另一个
如果
?如果它太大,也许你可以把它上传到某个地方,然后在这里发布链接,因为这样我就可以确定问题出在哪里了。你能告诉我如何调用
handleSelection()
方法吗?在函数
Validating()
中,您之前是否有任何
return
s?@AmirArbabian handleSelection()在ngOnInit()中直接调用,第二个问题呢?没有!因此,问题可能在于,您发布的
if
块中的可观察对象已经位于其他类似
开关的内部<代码>案例
或另一个
如果
?如果它太大,也许你可以把它上传到某个地方,然后在这里发布链接,因为这样我就可以确定问题出在哪里了?不幸的是,arrow函数没有
asObservable()
方法,只有
Subject
has不幸的是,arrow函数也没有
asObservable()
方法,只有
Subject
has那是我的问题@Chandan Y S如果这个答案对你有用,就把它标记为正确答案,这是我的问题@Chandan Y S如果这个答案对你有用,就把它标记为正确答案