在 属性 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.
});
我是 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.
});