触摸输入文件在页面更改后单击Ionic 4

时间:2018-02-16 12:02:36

标签: javascript html angular ionic-framework

我想触发/打开来自Ionic 4中另一页的文件输入。

在第1页中,我有一个转到模态的按钮,在页面模态中我想自动触发<input file>对话框

组件

ionViewWillEnter() {
    document.getElementById('file').click(); // Tried with this one 1st, this only works in Internet Explorer / Edge
    this.fileInput.nativeElement.click();    // And also this with @ViewChild
}

HTML

<input type="file" name="file" #file id="file" (change)="fileChange($event)" required>

4 个答案:

答案 0 :(得分:3)

这是我用来触发点击&lt;输入&GT; - 元素:

@ViewChild("file") fileInput: ElementRef;

triggerClick() {
    let event = new MouseEvent('click', {bubbles: true});
    this.renderer.invokeElementMethod(this.fileInput.nativeElement, 'dispatchEvent', [event]);
}

答案 1 :(得分:2)

改变这个:

ionViewWillEnter() {
    document.getElementById('file').click(); // Tried with this one 1st
    this.fileInput.nativeElement.click();    // And also this with @ViewChild
}

To This:

ionViewDidLoad() {
    document.getElementById('file').click(); // Tried with this one 1st
}

答案 2 :(得分:2)

  

尝试ngAfterViewInit()之后调用的生命周期钩子   组件的视图已完全初始化。

ngAfterViewInit() {
    document.getElementById('file').click();
}

答案 3 :(得分:1)

我解决了在page1中插入隐藏的输入文件,当用户尝试转到第2页时,我触发了文件输入。

当用户完成选择文件后,我将文件事件更改发送到第2页并管理第2页中的所有逻辑。