javascript - 上传json文件并在angualr 8中读取
问题描述
下面是我的代码,但我得到未定义:
onChange(fileList: FileList): void {
var file = fileList[0];
var fileReader = new FileReader();
var newFile = {};
fileReader.readAsText(file, 'UTF-8');
fileReader.onload = () => {
newFile = fileReader.result as object;
this.updateObj = cloneDeep(newFile);
};
console.log('updateObj', this.updateObj);
}
我想上传 json 文件(ARM 模板)并阅读它,但在 console.log 中 this.updateObj 显示未定义。
解决方案
您要问什么还不清楚。我认为这应该回答你的问题。
将来,创建MRE将使其他人更容易帮助您。
.ts
updateObj: any;
onChange(event: any): void {
var file = event.target.files[0];
var fileReader = new FileReader();
fileReader.readAsText(file, "UTF-8");
fileReader.onload = () => {
const newFile = fileReader.result as string;
this.updateObj = JSON.parse(newFile);
};
}
.html
<input type="file" (change)="onChange($event)" />
<pre><code>{{updateObj | json}}</code></pre>
Stackblitz 是用户为 Angular 问题创建 MRE 的绝佳工具。
更新
@DnyaneshSurya 感谢您的 MRE。您的示例正在运行,但仍不清楚您想要做什么。ngOnInit
仅在组件初始化时调用一次。你Input
当时的价值是未定义的。这不会改变,因为该ngOnInit
方法只被调用一次。不过,您的变量armTemplate
正在更新,如果您将 hello 组件模板更新为<h1>{{armTemplate | json}}</h1>
. 但是,如果您想在该值更新时执行某些操作,那么最简单的方法是在您的armTemplate
属性上使用 getter/setter。
这是另一个Stackblitz示例来演示。
推荐阅读
- python - 是否可以制作“获取根本不重复的值”算法,而不使用排序?(时间复杂度 => O(n)
- google-cloud-platform - 无法通过 Google 云功能中的 VPC 连接器从私有 IP 地址访问 http 服务
- .net - 我想对这个登录方法进行单元测试
- maven - Maven(Surefire) 排除所有单元测试用例但选择运行
- reactjs - 如何使用 react-window List + Infinte Loader 显示用户当前的索引
- spring-boot - 带有 Spring Boot 的千分尺添加自定义指标来计算用户注册
- c++ - 顶级声明错误,但程序运行正确
- mongodb - Mongo DB:如何在聚合阶段 $group 后获取原始文档?
- amazon-web-services - 提高 aQuestion 回答、BERT 和 GPT 的性能,在没有 GPU 的情况下进行预测
- php - Laravel:如何按值从多维集合中删除项目