angular - 错误未显示在 Angular 的 HTML 端
问题描述
我们正在尝试设置上传图像大小的限制。当它大于 2mb 时,它会在控制台日志上显示错误:
文件超出最大大小
,因为在添加的所有函数上,err => console.log(err)
但是当我们用它替换它err => err
并在 html 中添加这一行时:
<p *ngIf="err"> {{err}}</p>
它根本没有显示。这是完整的代码:
OnFileSelected(event) {
const file: File = event[0];
this.ReadAsBase64(file)
.then(result => {
this.selectedFile = result;
})
// tslint:disable-next-line:no-unused-expression
.catch (err => err);
// Here was .catch(err => console.log(err)); before
}
Upload() {
if (this.selectedFile) {
this.usersService.AddImage(this.selectedFile).subscribe(
data => {
this.socket.emit('refresh', {});
console.log(data);
},
err => err
// Here was err => console.log(err) before
);
}
}
ReadAsBase64(file): Promise<any> {
const reader = new FileReader();
const fileValue = new Promise((resolve, reject) => {
reader.addEventListener('load', () => {
const result = reader.result;
if (!result) reject('Cannot read variable');
if (result.length * 2 > 2**21) reject('File exceeds the maximum size'); // Note: 2*2**20 = 2**21
resolve(reader.result);
});
reader.addEventListener('error', event => {
reject(event);
});
reader.readAsDataURL(file);
});
return fileValue;
}
HTML
<p *ngIf="err"> {{err}}</p>
如何使它显示带有上述函数错误的错误的这个 p 标签?
解决方案
您需要将err
对象应用于组件对象
public err: any;
Upload() {
if (this.selectedFile) {
this.usersService.AddImage(this.selectedFile).subscribe(
data => {
this.socket.emit('refresh', {});
console.log(data);
},
err => this.err = err
// Here was err => console.log(err) before
);
}
}
您不能将 html 绑定到函数内部回调中的变量,该err
对象是回调私有的。
推荐阅读
- php - Woocommerce 添加多种支付方式
- python - 如何将 random.randint 放入列表
- javascript - console.log 显示不同的数字 (11321144241322243122)
- java - 询问jsp不恰当的列名错误
- html - 试图让谷歌表在网页上嵌入自动大小(不滚动)
- angular - Telerik Grid 任意字段
- list - 如何将此 if-then-else 构造更改为使用模式匹配或/和防护的构造?
- r - 使用 gsub 替换表达式列表
- facebook - Facebook 应用程序无法加载 - 内容安全策略“frame-src”
- python - 根据列数据分布和条件从 Python 数据框中选择随机数据