Проверка загрузки файла машинописного текста - PullRequest
0 голосов
/ 09 ноября 2018

Я пытаюсь загрузить файл, но получаю сообщение об ошибке для следующего кода. Ошибка: свойство не существует для элемента типа HTML . Как решить эту проблему?

Я прокомментировал ошибку для следующей строки кода.

component.html

<input type="file" name="fileToUpload" id="fileToUpload" onchange="fileSelected();"/>

   <ul>
     <label>Select a Module Name</label>
     <select id = "ModuleDropDown">
       <option value="">Select</option>
       <option value="Recuirtmnet">Recuirtmnet</option>
       <option value="Talent" selected="selected">Talent</option>
       <option value="Attrition">Attrition</option>
       <option value="Performance">Performance</option>
       <option value="Survey">Survey</option>
      </select>
     </ul>

    <div id="fileName"></div>
    <div id="fileSize"></div>
    <div id="fileType"></div>

component.ts

fileSelected() {

    //Property 'files' does not exist on type 'HTMLElement'
    let file = document.getElementById('fileToUpload').files[0]; 

    if (file) {
        let fileSize = 0;
        if (file.size > 1024 * 1024)
            this.fileSize = (Math.round(file.size * 100 / (1024 * 1024)) / 100).toString() + 'MB';
        else
            this.fileSize = (Math.round(file.size * 100 / 1024) / 100).toString() + 'KB';

        document.getElementById('fileName').innerHTML = 'Name: ' + file.name;
        document.getElementById('fileSize').innerHTML = 'Size: ' + fileSize;
        document.getElementById('fileType').innerHTML = 'Type: ' + file.type;
        let dropDown = document.getElementById("ModuleDropDown");


        //Property 'options' does not exist on type 'HTMLElement'.
        //Property 'selectedIndex' does not exist on type 'HTMLElement'
        let dpVal = dropDown.options[dropDown.selectedIndex].value;

        let init_params = {};
        this.init_params.action = 'prepare';
        this.init_params.file_name = file.name;
        this.init_params.file_size = fileSize;
        this.init_params.moduleName = dpVal;

        ws.send(JSON.stringify(init_params))
        console.log("sending init params.....")

    }
}

1 Ответ

0 голосов
/ 09 ноября 2018

Есть много проблем с вашим кодом. Вы используете Vanilla JavaScript вместо использования углового синтаксиса.

  1. Изменение ввода файла можно отслеживать с помощью (change) и передачей объекта $event в обработчик изменений.

  2. Вы можете использовать [(ngModel)], чтобы получить значение выбранной опции из выпадающего списка.

  3. Не рекомендуется использовать document для доступа к DOM и внесения в него изменений или отображения данных. Вместо этого следует использовать синтаксис строковой интерполяции ({{}}).

Вот Образец StackBlitz для вашей ссылки.

Выберите параметр, а затем загрузите файл, чтобы просмотреть сведения о выбранном файле в пользовательском интерфейсе и параметр «Выбранный выпадающий список» на консоли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...