在Typescript中我试图用一些javascript代码读取XML文件,并使用以下代码将文本内容添加到局部变量中:
import { Injectable } from '@angular/core';
@Injectable()
export class JsonreaderService {
private jsonText: string;
constructor() {
this.readTextFile("../../assets/content.json");
}
readTextFile(file)
{
let jsonText: string;
var rawFile = new XMLHttpRequest();
rawFile.open("GET", file, false);
rawFile.onreadystatechange = function ()
{
if(rawFile.readyState === 4)
{
if(rawFile.status === 200 || rawFile.status == 0)
{
this.jsonText = rawFile.responseText;
}
}
}
rawFile.send(null);
}
}
我正在尝试将json文件中的文本分配给我的私有局部变量jsonText:this.jsonText = rawFile.responseText;
,它们都是' string'。
当我尝试这个时,我得到错误:
财产' jsonText'类型' XMLHttpRequest'
上不存在
有人知道如何在打字稿中做到这一点吗?当我删除this.
时,可以将responseText定义为函数readTextFile(file)
中的jsonText变量
答案 0 :(得分:2)
我想你应该在某个地方举办一个类的引用,比如:
import { Injectable } from '@angular/core';
@Injectable()
export class JsonreaderService {
private jsonText: string;
constructor() {
this.readTextFile("../../assets/content.json");
}
readTextFile(file)
{
var self = this;
let jsonText: string;
var rawFile = new XMLHttpRequest();
rawFile.open("GET", file, false);
rawFile.onreadystatechange = function ()
{
if(rawFile.readyState === 4)
{
if(rawFile.status === 200 || rawFile.status == 0)
{
self.jsonText = rawFile.responseText;
}
}
}
rawFile.send(null);
}
}
答案 1 :(得分:2)
使用箭头功能保存this
的范围:
readTextFile(file)
{
let jsonText: string;
var rawFile = new XMLHttpRequest();
rawFile.open("GET", file, false);
rawFile.onreadystatechange = () =>
{
if(rawFile.readyState === 4)
{
if(rawFile.status === 200 || rawFile.status == 0)
{
this.jsonText = rawFile.responseText;
}
}
}
rawFile.send(null);
}