在 属性 angular 中获取未定义的值

Getting undefined value in property angular

我是 angular 的新手,我正在尝试从我的第二个组件中的共享服务获取字符串数据,该组件从另一个组件接收值。 所以我订阅了 observable 以从服务接收字符串数据,在另一个组件中接收值后我将值存储在 属性 中,如下所示,但无法访问存储在 属性 在函数之外..

请有人可以指导我解决这个问题..

这是我订阅 observable 的函数

 ngAfterViewInit(): void {
    this.recieveFiles();
    this.sendAttachment();
  }

  recieveFiles(){
    this._sendFile.getFile$.subscribe(files => {    
      // When this code gets executed it should have the value
      // emitted from the emitting component.
      this.getFiles = files;
       console.log("File:" + this.getFiles);   <- **Here I am getting the string data in console**
      return this.getFiles;
   
    });   
  }

x:any;
  sendAttachment(){
    let y = this.getFiles;
    console.log("String Files:" + y);  **This where I am getting undefined as shown in Screenshot**
  }

这是截图

return this.getFiles; 是不必要的。 而不是那条线,把 this.sendAttachment();

在您的 ngAfterViewInit 中,有两个方法被调用。 recieveFiles -> 运行订阅并获取文件。 sendAttachment -> 对文件做些什么。

在您的实现中,sendAttachment 在 recieveFiles 订阅获取文件之前运行。因此它显示为未定义。

这是你的问题:

this.recieveFiles(); <-- Begins to receive the file
this.sendAttachment(); <-- Before the file is received, Angular executes this

修复方法是在调用 sendAttachment() 之前等待实际文件加载,这意味着您可以在订阅中执行 this.sendAttachment()

    this._sendFile.getFile$.subscribe(files => {    
      this.getFiles = files;
      this.sendAttachment(); <-- Here's your fix.
    });