我有一个角度应用程序,其组件具有如下文件输入:
<input #fileInput type="file" (change)="uploadFile($event)" />
该组件在应用程序的多个部分之间共享。几乎在所有情况下,这都完全符合预期。但是,在我的应用程序的一页上,当在 Salesforce iOS 应用程序中的
iframe
中的 WkWebView
中使用该应用程序时,如果用户执行 iOS“拍摄照片或视频”工作流程,则 change
事件不会触发这是文件输入的 iOS 实现的一部分。应用程序中的其他页面可以很好地使用该输入;其他 iOS 应用程序可以使用 iframe 该网站并正常使用此页面;使用“拍照或录像”以外的选项就可以了。
更奇怪的是,如果我绕过 Angular 将
change
事件本地附加到元素上,它就可以正常工作:
@ViewChild('fileInput', { static: true }) fileInput: ElementRef;
ngAfterViewInit() {
this.fileInput.nativeElement.addEventListener('change', this.uploadFile);
}
这种极其狭窄的特定因素的融合导致了该错误。经过几天的思考并试图找出根本原因,我已经没有想法了。什么可能会干扰
change
事件触发?
顺便说一句,我已经尝试了一些技巧来
null
输出输入值,如thisone等答案中所建议的那样。这在这里没有帮助。
您可以将 { static: true } 更改为 { static: false } ,以便在尝试访问和添加事件侦听器时该元素不会未定义。