кодесурса
«Угловое

Пользовательский ввод

script1adsense2code
script1adsense3code

Действия пользователя, такие как нажатие на ссылку, нажатие кнопки и ввод текста, являются событиями DOM. В этом руководстве мы рассмотрим, как связать эти события с обработчиками событий компонента, используя синтаксис привязки событий Angular.

Привязка к событиям пользовательского ввода

Вы можете использовать привязки событий Angular для ответа на любое событие DOM. Многие события DOM запускаются пользовательским вводом. Связывание с этими событиями дает возможность получить ввод от пользователя.

Для привязки к событию DOM заключите имя события DOM в круглые скобки и присвойте ему цитируемый оператор шаблона.

В следующем примере показана привязка события, которая реализует обработчик щелчка:

<button (click)="onClickMe()">Click me!</button>

`(Click)` слева от знака равенства идентифицирует событие нажатия кнопки как цель привязки. Текст в кавычках справа от знака равенства является оператором шаблона, который отвечает на событие click, вызывая метод компонента onClickMe.

При написании привязки учитывайте контекст выполнения оператора шаблона. Идентификаторы в выражении шаблона принадлежат конкретному объекту контекста, обычно компоненту Angular, управляющему шаблоном.

Пример ниже иллюстрирует привязку к событиям пользовательского ввода

Код TypeScript:

@Component({
  selector: 'app-click-me',
  template: `
    <button (click)="onClickMe()">Click me!</button>
    {{clickMessage}}`
})
export class ClickMeComponent {
  clickMessage = '';
  onClickMe() {
    this.clickMessage ='You are my hero!';
  }
}

Демонстрация в реальном времени:

См. Привязка пера к событиям ввода пользователя пользователем w3resource ( @ w3resource ) на CodePen .


Когда пользователь нажимает кнопку, Angular вызывает метод onClickMe из ClickMeComponent.

Получить пользовательский ввод из объекта $ event

События DOM несут полезную информацию, которая может быть полезна для компонента. В этом разделе показано, как привязать к событию keyup поля ввода, чтобы получить ввод пользователя после каждого нажатия клавиши.

Следующий код прослушивает событие keyup и передает всю полезную нагрузку события ($ event) обработчику события компонента.

Код TypeScript:


template: `
  <input (keyup)="onKey($event)">
  <p>{{values}} </p>
`

Демонстрация в реальном времени:

См. Перо Получите пользовательский ввод из объекта $ event по w3resource ( @ w3resource ) на CodePen .


Когда пользователь нажимает и отпускает клавишу, происходит событие keyup, и Angular предоставляет соответствующий объект события DOM в переменной $ event, которую этот код передает в качестве параметра методу onKey () компонента.

Код TypeScript:

export class KeyUpComponent_v1 {
  values = '';
  onKey(event: any) {
    this.values += event.target.value + ' | ';
  }
}

Демонстрация в реальном времени:

См. Перо Получите пользовательский ввод из объекта $ event 2 по w3resource ( @ w3resource ) на CodePen .


Свойства объекта $ event варьируются в зависимости от типа события DOM. Например, событие мыши включает в себя информацию, отличную от события редактирования поля ввода.

Все стандартные объекты событий DOM имеют целевое свойство, ссылку на элемент, вызвавший событие.

В этом случае target ссылается на элемент <input>, а event.target.value возвращает текущее содержимое этого элемента.

После каждого вызова метод onKey () добавляет содержимое значения поля ввода в список в свойстве значений компонента, за которым следует символ разделителя (|). Интерполяция отображает накопление изменений в поле ввода из свойства values.

В качестве альтернативы, вы можете накапливать отдельные ключи, подставляя event.key вместо event.target.value.

Получить пользовательский ввод из ссылочной переменной шаблона

Есть еще один способ получить пользовательские данные: использовать ссылочные переменные шаблона Angular. Эти переменные обеспечивают прямой доступ к элементу из шаблона. Чтобы объявить переменную ссылки на шаблон, перед идентификатором должен стоять символ хеша (или фунта) (#).

В следующем примере используется ссылочная переменная шаблона для реализации петли нажатия клавиш в простом шаблоне.

Код TypeScript:

Component({
  selector: 'app-loop-back',
  template: `
    <input #box (keyup)="0">
    <p>{{box.value}} </p>
  `
})
export class LoopbackComponent { 
}

Демонстрация в реальном времени:

См. Перо Получите пользовательский ввод из ссылочной переменной шаблона с помощью w3resource ( @ w3resource ) в CodePen .


Ссылочная переменная шаблона с именем `box`, объявленная в элементе` <input> `, ссылается на сам элемент <input>. Код использует переменную `box`, чтобы получить значение элемента input и отобразить его с интерполяцией между тегами <p>.

Попасть в поле ввода с помощью ссылочной переменной шаблона проще, чем пройти через объект `$ event`. Вот переписать предыдущий пример keyup, который использует переменную ссылки на шаблон для получения ввода пользователя.

Код TypeScript:

Component({
  selector: 'app-key-up2',
  template: `
    <input #box (keyup)="onKey(box.value)">
    <p>{{values}} </p>
  `
})
export class KeyUpComponent_v2 {
  values = '';
  onKey(value: string) {
    this.values += value + ' | ';
  }
}

Демонстрация в реальном времени:

См. Перезапись пером ссылочной переменной шаблона, чтобы получить ввод пользователя. по w3resource ( @ w3resource ) на CodePen .


Приятным аспектом этого подхода является то, что компонент получает чистые значения данных из представления. Больше не требуется знание $ event и его структуры.

Фильтрация ключевых событий (с key.enter)

Обработчик события (keyup) слышит каждое нажатие клавиши. Иногда имеет значение только клавиша Enter, потому что она сигнализирует о том, что пользователь закончил печатать. Один из способов уменьшить шум - это изучить каждый $ event.keyCode и предпринимать действия только тогда, когда клавишей является Enter.

Это можно легко сделать, используя псевдо-событие Angular keyup.enter. Затем Angular вызывает обработчик событий только тогда, когда пользователь нажимает Enter.

Код TypeScript:

@Component({
  selector: 'app-key-up',
  template: `
    <input #box (keyup.enter)="onEnter(box.value)">
    <p>{{value}} </p>
  `
})
export class KeyUpComponent{
  value = '';
  onEnter (value: string) {this.value = value;}
}
 

Демонстрация в реальном времени:

См. Фильтрация событий Pen Key (с key.enter) по w3resource ( @ w3resource ) на CodePen .


На размытие

В предыдущем примере текущее состояние поля ввода теряется, если пользователь уходит и щелкает в другом месте на странице, не нажимая сначала клавишу Enter. Свойство value компонента обновляется только тогда, когда пользователь нажимает Enter.

Чтобы устранить эту проблему, прослушайте клавишу Enter и событие размытия.

Код TypeScript:

Component({
  selector: 'app-key-up4',
  template: `
    <input #box
      (keyup.enter)="update(box.value)"
      (blur)="update(box.value)">
    <p>{{value}} </p>
  `
})
export class KeyUpComponent_v4 {
  value = '';
  update(value: string) {this.value = value;}
}

Демонстрация в реальном времени:

См. Pen On blur от w3resource ( @ w3resource ) в CodePen .


Предыдущий: Введение в компоненты
Далее: Введение в модули

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code