使用Angular4打开/加载文件

使用Angular4打开/加载文件,angular,typescript,svg,Angular,Typescript,Svg,我有一个angular 4应用程序,在这个应用程序中,我想打开/加载一个svg文件,将字符串放入其中。 因此,我想打开一个类似svg或txt的文件,并获取相应的字符串 我尝试这样做: this.http.get('assets/images/module.svg').map(res => res.text()).subscribe(text => {this.data = text}); 但是此.data始终未定义,而如果我这样做: this.http.get('assets/im

我有一个angular 4应用程序,在这个应用程序中,我想打开/加载一个svg文件,将字符串放入其中。 因此,我想打开一个类似svg或txt的文件,并获取相应的字符串

我尝试这样做:

this.http.get('assets/images/module.svg').map(res => res.text()).subscribe(text => {this.data = text});
但是
此.data
始终未定义,而如果我这样做:

this.http.get('assets/images/module.svg').map(res => res.text()).subscribe(text => {console.log(text)});
我把绳子放在控制台里了


你知道为什么我无法获取字符串,或者是否有其他方法打开文件吗?

我猜你正在尝试类似的方法

this.http.get('assets/images/module.svg').map(res => res.text()).subscribe(text => this.data = text);

console.log(this.data);
第一个调用是
async
调用,因此获取数据需要一些时间 并将其分配给变量,其中,
console.log
是一个
sync
语句,该语句立即发生,因此未定义

如果您想使用this.data,我建议您在订阅中完成所有过程

乙二醇


你能试试这个
this.http.get('assets/images/module.svg').map(res=>res.text()).subscribe(text=>this.data=text)移除花括号。这是一样的:
未定义
是的,它可以工作。但是如果我想在变量
this.data
中使用文件的内容,我该怎么办呢?因为我需要打开3个文件,同时使用3个文件的内容。那么,如何在不等待打开第一个文件和第二个文件的情况下打开这3个文件呢
   this.http.get('assets/images/module.svg').map(res => res.text()).subscribe(text => { this.data = text; console.log(this.data));