提问者:小点点

如何从打字稿中的异步方法中取值?


我需要调用/订阅外部服务可观察方法并从中获取值。我尝试了一下,它是组件构造器,但总是返回未定义。我检查了将控制台. log放在方法中的值。需要一些专家帮助来获取这个对象-

     this.x:string; 
        constructor(
        private readonly socService: ocService) { }
    
        
      ngOnInit(): void {
       
    
        this.ocService.getActiveoc().subscribe(oc => { this.x= oc.id });
        
        //TODO For Testing
        if(this.x){
          console.log("ID" + this.x)
          this.store.dispatch(selectPatientAction({ x: this.x}));
        }
      }

   onScanX() {
    this.store.dispatch(scanX({x: this.x }));
    this.isocSelected = true;
  }

共2个答案

匿名用户

您想对该值执行的所有操作都应该在订阅方法中完成。也在该方法中调度您的操作。

我假设你在这里使用NgRedux。

    constructor(
       private readonly socService: ocService
       private store: NgRedux<AppState>
     ) { }
    
        
      ngOnInit(): void {
        this.ocService.getActiveoc().subscribe(oc => { 
          this.x = oc.id;
          this.store.dispatch(selectPatientAction({ x: this.x}));
        });
      }

   onScanX() {
    this.store.dispatch(scanX({x: this.x }));
    this.isocSelected = true;
  }

匿名用户

我想你在这个部分有一个错别字?

this.ocService.getActiveoc().subscribe(soc => { this.x= oc.id });

我认为应该是soc.id而不是oc.id