Angular Установите курсор ввода для следующего ввода, PS: следующий тег ввода будет динамически добавлен при нажатии клавиши Enter предыдущего ввода

Я использую цикл for с входными тегами. Пользователь что-то вводит, и при нажатии кнопки ввода команда отправляется, а текущий цикл for запускается с другим входным тегом. Я хочу, чтобы курсор был перемещен к следующему вводу. Существует множество решений, в которых получение srcElement и перемещение фокуса на следующий элемент, но здесь следующий элемент добавляется динамически.

оболочка.component.html

<div class = "shell">
    <table>
        <tr *ngFor = "let text of shellText">
            <ng-container *ngIf = "getType(text['type']);else input">
                <td style = "width: 2%">{{text['preText']}}</td>
                <td>{{text['text']}}</td>
            </ng-container>
            <ng-template #input>
                <td style = "width: 2%">{{text['preText']}}</td>
                <td><input [readonly] = "text['type'] == 'command'" class = "shell-input"
                        (keyup.enter) = "onEnter($event,text['line'])" [(ngModel)] = "text['text']" mat-input type = "text" /></td>
            </ng-template>
        </tr>
    </table>
</div>

shell.component.ts

  onEnter(event, line) {
    if (this.shellText[line - 1].text.trim().endsWith(':')) {
      this.shellText.push({ 'type': CLASSES['CONTINUE_COMMAND'], 'line': line + 1, 'preText': '', 'text': '    ' },)
    } else {
      this.shellText.push({ 'type': CLASSES['CURRENT_COMMAND'], 'line': line + 1, 'preText': '>>>', 'text': '' },)
    }
    this.shellText[line - 1]['type'] = CLASSES['COMMAND']

    setTimeout(() => {
      this.setFocus(event)
    }, 2000);
  }


  setFocus(event) {
    debugger
    let element = event.srcElement.nextElementSibling; // get the sibling element
    console.info(element)
    if (element == null)  // check if its null
      return;
    else
      element.focus();   // focus if not null
  }

Примечание. Я пытаюсь создать оболочку Python.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
0
411
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

shell.component.ts

  setFocusevent) {
    let element = event.srcElement.parentElement.parentElement.nextElementSibling.lastElementChild.firstElementChild; // get the sibling element
    if (element == null)  // check if its null
      return;
    else
      element.focus();   // focus if not null
  }
  1. Сначала вы получаете ссылку тега <input>
  2. Затем вы получаете его родительский элемент, который является <td>
  3. Затем вы идете дальше до <tr>
  4. Затем вы ссылаетесь на следующий <tr>, который будет создан динамически.
  5. Затем вы получаете доступ к последнему элементу, который будет последним <td>
  6. Затем вы указываете на нужный элемент <input> и добавляете фокус

хорошо, это сработало отлично .. Мне пришлось использовать jquery, чтобы решить проблему.

Linda Sam 11.12.2020 06:32

Другие вопросы по теме