Angular 使用角度观测值的问题

Angular 使用角度观测值的问题,angular,ionic-framework,Angular,Ionic Framework,正在尝试检索这些值​​来自服务上的查询集。必需在警报中以消息形式显示所述查询的结果 查询是功能性的,可以提取我需要的数据 客户端服务 searchType(his: string): Observable<any> { return this.http.get(`${environment.url}rute?param=${his}`, this.httpOptions); } 应用console.log可以获得我需要的数据 从数据库中检索数据 请验证i

正在尝试检索这些值​​来自服务上的查询集。必需在警报中以消息形式显示所述查询的结果

查询是功能性的,可以提取我需要的数据

客户端服务

searchType(his: string): Observable<any> {
        return this.http.get(`${environment.url}rute?param=${his}`, this.httpOptions);
      }
应用
console.log
可以获得我需要的数据

从数据库中检索数据 请验证idMensaje:30121的观察结果

问题

  • 必需在可变tipo字符串中添加此值
  • 变量定义 ValueOpt=“”

    测试

     this.client.searchType(1).subscribe(val => { console.log(val.column) });
    
    this.client.searchType(1).subscribe(val => { this.ValueOpt = val.Column});
    console.log(this.ValueOpt )
    
    我尝试用前面的方法将从查询中获得的数据添加到变量ValueOpt中,但是没有。当我修改我的指令以便能够在this.ValueOpt中包含此查询的结果时

    该事件中的程序是真实的

    我建议

    ngOnInit() {
      this.foo()
    }
    
    async foo() {
      const val = await this.client.searchType(1).toPromise();
      console.log(val.column)
    }
    

    在上面的代码中,您有:

    ngOnInit() {
       this.client.searchType(1).subscribe(val => { this.ValueOpt = val.Column});
       console.log(this.ValueOpt);
    }
    
    在这种情况下,ValueOpt变量将保持未定义状态(或上次设置的值),因为subscribe方法异步流动,同步流动中的代码将继续,这使得它的行为不受欢迎。如果您想使用rxjs,只需按以下方式更改代码:

    ngOnInit() {
       this.client.searchType(1).subscribe(val => { 
       this.ValueOpt = val.Column
       console.log(this.ValueOpt);
       });
    }
    

    您可能应该解释为什么。如何获取val.column out foo()的值?在subscribe之外,this.ValueOpt会丢失该值,需要其他方法的值。然后,您可以使用该方法进行订阅。
    ngOnInit() {
       this.client.searchType(1).subscribe(val => { 
       this.ValueOpt = val.Column
       console.log(this.ValueOpt);
       });
    }