用户输入

事件绑定

使用

  • (event)
  • on-event

概念

​ 用户操作 -> DOM事件

  • 用户操作

    • 点击链接
    • 按下按钮
    • 输入文字
  • DOM事件
    • $event

      • 类型

        • any

          • 不能推测属性
          • 可能导致错误
        • 指定类型
          • 组件需要了解过多的模板细节
          • 违反了分离关注原则
      • 标准的HTML DOM事件
        • 有target属性

示例

模板
<button (click)="OnClickMe()">non $event</button>
<!--
$event传参
keyup -> 键盘按下并松开 事件
-->
<input on-keyup="onKey($event)" />
组件
inputContent = '';
inputKey = ''; onKey(event: any): void {
this.inputContent += event.target.value + '|';
this.inputKey += event.key + '|';
} // 指定事件类型
onKey(event: KeyboardEvent): void {
// $event.target -> HTML元素
// 转换元素类型 -> 不是每个元素都有value
// HTMLInputElement.value -> 当前输入框的内容
this.inputContent += (event.target as HTMLInputElement).value + '|';
// key -> 按下的键
this.inputKey += event.key + '|';
}

模板变量

使用方式

  • name

  • ref-name

实例

模板
<!--
响应了异步事件(按键)-> 触发绑定更新机制 -> 视图刷新
极简写法 (keyup) = "0"
-->
<input #inputElement (keyup)="0"/>
<p>{{inputElement.value}}</p> <!--
优点:
无需了解$event及其结构
组件从模板获取的是干净的信息
-->
<input ref-input (keyup)="onKey(input.value)" />
<p></p>
组件
inputContent = '';

onKey(value: string): void {
this.inputContent += value + '|';
}

事件筛选

事件处理器 event-handler

模板
<input (keyup)="onKey($event)" />
{{inputContent}}
组件
inputContent = '';

onKey(event: KeyboardEvent): void {
if (event.key === 'Enter'){
this.inputContent += (event.target as HTMLInputElement).value + '|';
}
}

伪事件 pseudo-event

不存在DOM事件,属于angular的语法糖

模板
<input #input (keyup.enter)="onKey(input.value)" />
{{inputContent}}
组件
inputContent = '';

onKey(value: string): void {
this.inputContent += value + '|';
}

失焦事件 blur-event

鼠标聚焦到其他位置时,引发的操作

模板
<input #input (keyup.enter)="onKey(input.value)" (blur)="onKey(input.value)" />
{{inputContent}}
组件
inputContent = '';

onKey(value: string): void {
this.inputContent += value + '|';
}

总结

适用于小规模的输入,如果大型输入使用双向绑定-NgModel更简单优雅。

Angular用户输入的更多相关文章

  1. Angular2 表单(一) 用户输入

    绑定到用户输入事件 等号左边的 (click) 表示把按钮的点击事件作为绑定目标. 等号右边引号中的文本是模板语句,通过调用组件的 onClickMe 方法来响应这个点击事件. <button ...

  2. 防御XSS攻击-encode用户输入内容的重要性

    一.开场先科普下XSS 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶 ...

  3. python学习笔记(基础二:注释、用户输入、格式化输出)

    注释 单行:# 多行:上下各用3个连续单引号或双引号 3个引号除了多行注释,还可以打印多行 举例: msg = ''' name = "Alex Li" name2 = name ...

  4. 第4章 Java接收用户输入

    第4章 Java接收用户输入 1.输入 使用Scanner工具类可以换取用户输入的数据Scanner类位于java.util包中,使用时需要导入此包使用步骤: 1.导入java.util.Scanne ...

  5. Python学习【第四篇】用户输入及判断

    用户输入: 例1.写一个用户输入密码的小程序,流程如下: 1.用户输入自己的用户名 2.打印"Hello+用户名" #!/usr/bin/env python #name = ra ...

  6. 使用scanner工具类来获取用户输入的信息

    使用scanner工具类来获取用户输入的成绩信息. 步骤:1.导入java.util.Scanner包 2.创建Scanner对象 3.接受并保存用户输入的值 例子:通过用户输入来获取学生成绩 pac ...

  7. alertDialog创建登陆界面,判断用户输入

    alertDialog创建登陆界面,需要获取用户输入的用户名和密码,获取控件对象的时候不能像主布局文件那样获得, 需要在onClickListener中获取,代码如下: public boolean ...

  8. Asp.Mvc中的text实现 辅助用户输入 灰色字体

    在开发Web应用程序中经常需要用户在文本框输入信息,为了提高程序人性化设置以及用户体验效果常常需要在文本框中显示灰色字体辅助用户输入 如:

  9. python学习道路(day1note)(变量,注释,用户输入,格式化输出,if,while,for循环并扩展练习)

    python是一门动态解释性的强类型定义语言,其应用范围非常之广 1:进入python语言 #!/usr/bin/env python #_*_coding:utf-8_*_ print(" ...

随机推荐

  1. 浏览器自动化的一些体会4 webBrowser控件之零碎问题2

    1. DocumentCompleted的多次执行问题 有的网页,会多次触发DocumentCompleted事件,由于它是异步的,不会阻塞,所以如果不恰当处理,会造成某些代码被错误地多次执行,造成意 ...

  2. 一线大厂工程师推荐:Mysql、Springboot、JVM、Spring等面试合集

    前两天晚上,正当我加班沉浸在敲代码的快乐中时,听到前桌的同事在嘀咕:Spring究竟是如何解决的循环依赖? 这让我想起最开始学Java的时候,掌握了一点基本语法和面向对象的一点皮毛.当时心里也是各种想 ...

  3. C++多线程基础教程

    目录 1 什么是C++多线程? 2 C++多线程基础知识 2.1 创建线程 2.2 互斥量使用 lock()与unlock(): lock_guard(): unique_lock: conditio ...

  4. 6.oracle用户管理口令

    一.使用profile管理用户口令概述:profile是口令限制,资源限制的命令集合,当建立数据库时,oracle会自动建立名称为default的profile.当建立用户没有指定profile选项时 ...

  5. Java 8新的时间日期库,这二十个案例看完你还学不会算我的!!!

    Java对日期,日历及时间的处理一直以来都饱受诟病,尤其是它决定将java.util.Date定义为可修改的以及将SimpleDateFormat实现成非线程安全的.看来Java已经意识到需要为时间及 ...

  6. Java面试题(多线程篇)

    多线程 35.并行和并发有什么区别? 1.并行是指两个或者多个事件在同一时刻发生:而并发是指两个或多个事件在同一时间间隔发生. 2.并行是在不同实体上的多个事件,并发是在同一实体上的多个事件. 3.在 ...

  7. vue的修饰符

    v-on 缩写:@ 事件修饰符 .stop - 调用 event.stopPropagation(). //阻止冒泡 .prevent - 调用 event.preventDefault(). //阻 ...

  8. openCV - 2. 矩阵的掩膜操作

    获取图像像素指针.掩膜操作解释 获取图像像素指针 CV_Assert(myImage.depth() == CV_8U); Mat.ptr<uchar>(int i=0) 获取像素矩阵的指 ...

  9. 力扣Leetcode 21. 合并两个有序链表

    合并两个有序链表 将两个升序链表合并为一个新的升序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出:1-> ...

  10. 深度优先搜索(DFS)解题总结

    定义 深度优先搜索算法(Depth-First-Search),是搜索算法的一种.它沿着树的深度遍历树的节点,尽可能深的搜索树的分支. 例如下图,其深度优先遍历顺序为 1->2->4-&g ...