Angular 2 - INPUT 元素类型 FILE 的重置值

标签 angular angular2-template

在 angular2 应用程序中,我有一个用于选择文件的纯 html 输入元素(类型 FILE)。这是那个人

<input #selectedImage id="selectImage" type="file" name="image" (change)="imageSelected($event)">

我需要能够在用户单击“重置”按钮后重置选择。 如果我使用 @ViewChild 装饰器并通过代码操作输入元素,我可以很容易地做到这一点,即

@ViewChild('selectedImage') selectedImageFile;

reset() {
    this.selectedImageFile.nativeElement.value = '';
}

现在我想通过属性绑定(bind)来做同样的事情,但在这里我发现了障碍。我改代码如下

<input id="selectImage" type="file" name="image" value={{selectedImageFile}} (change)="imageSelected($event)">

reset() {
        this.selectedImageFile = '';
}

但现在没有任何效果(即,当我单击重置按钮时,输入元素的选择不会被清除)。我确信我遗漏了一些非常微不足道的东西,但有时会发生,我的眼睛现在已经瞎了。任何帮助将不胜感激。

最佳答案

我不知道为什么它一开始不起作用,但无论如何它都不适用于连续调用,因为您需要设置 selectedImageFile到一个值 != ''让 Angular 识别这个变化。

reset()之后它将是 ''并且每个后续调用都将被忽略,因为没有变化。

将其设置为一个值 != ''会抛出错误,因为 <input type="file">不允许设置与 '' 不同的值以编程方式。

关于Angular 2 - INPUT 元素类型 FILE 的重置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35840292/

相关文章:

typescript - Angular 2 : Inject external Component into other component via directive not working

javascript - Angular 6 服务和类继承

Angular 等待一个 promise 执行的循环,然后再继续下一个代码块

angular - 与 Angular 2.0.0-beta.0 一起使用时,自定义属性会出现解析错误

angular - 在 AOT 编译之前 Lint Angular 2、4、5 模板 html 文件的最佳方法是什么

google-maps - Angular 2谷歌地图实现

javascript - 遥测初始化程序之一失败,遥测项目将不会发送

java - 预检响应没有 HTTP 正常状态。

css - Angular 2 Dart : How to add body class from inside component?

javascript - Angular 4,如何根据条件将元素放入一个容器或另一个容器中?