zoukankan      html  css  js  c++  java
  • Angular2组件开发—表单输入(一)

    NgForm - 表单指令

    NgForm指令为表单元素/form建立一个控件组对象,作为控件的容器; 而NgControlName指令为则为宿主input元素建立一个控件对象,并将该控件加入到NgForm指令建立的控件组中:

    局部变量

    通过使用#符号,我们创建了一个引用控件组对象注意,不是form元素!)的局部变量f。 这个变量最大的作用是:它的value属性是一个简单的JSON对象,键对应于input元素的 ng-control属性,值对应于input元素的值

    声明指令依赖

    NgForm指令和NgControlName指令都包含在预定义的数组变量formDirectives中,所以我们在组件注解的directives属性中直接声明formDirectives就可以在模板中直接使用这些指令了:

     1 //angular2/ts/src/forms/directives.ts
     2 export const formDirectives = CONST_EXPR([
     3   NgControlName,
     4   NgControlGroup,
     5  
     6   NgFormControl,
     7   NgModel,
     8   NgFormModel,
     9   NgForm,
    10  
    11   NgSelectOption,
    12   DefaultValueAccessor,
    13   CheckboxControlValueAccessor,
    14   SelectControlValueAccessor,
    15  
    16   NgRequiredValidator
    17 ]);

    例如:

     1 <!doctype html>
     2 <html>
     3 <head>
     4     <meta charset="utf-8">
     5     <title>NgForm</title>
     6     <script type="text/javascript" src="lib/system@0.16.11.js"></script>
     7     <script type="text/javascript" src="lib/angular2.dev.js"></script>
     8     <script type="text/javascript" src="lib/system.config.js"></script>
     9 </head>
    10 <body>
    11     <ez-app></ez-app>
    12     <script type="module">
    13         import {Component,View,bootstrap,NgIf} from "angular2/angular2";
    14         //引入form指令集
    15         import {formDirectives} from "angular2/forms";
    16         
    17         //EzApp组件
    18         @Component({selector:"ez-app"})
    19         @View({
    20             directives:[formDirectives,NgIf],
    21             template:`
    22                 <form #f="form" (submit)="search(f.value)">
    23                     <select ng-control="lx">
    24                         <option value="web">网页</option>
    25                         <option value="news">新闻</option>
    26                         <option value="image">图片</option>
    27                     </select>
    28                     <input type="text" ng-control="kw">
    29                     <button type="submit">搜索</button>
    30                 </form>
    31                 <!--给个简单的反馈-->
    32                 <h1 *ng-if="kw!=''">正在搜索 内容为{{kw}} 类型为{{lx}}...</h1>
    33             `,
    34             styles:[`form{background:#90a4ae;padding:5px;}`]            
    35         })
    36         class EzApp{
    37             constructor(){
    38                 this.kw = "";
    39                 this.lx = "";
    40             }
    41             search(val){
    42                 this.kw = val.kw;
    43                 this.lx = val.lx;
    44                 //假装在搜索,2秒钟返回
    45                 setTimeout(()=>this.kw="",30000);
    46             }
    47         }   
    48         bootstrap(EzApp);
    49     </script>
    50 </body>
    51 </html>

    结果为:

  • 相关阅读:
    live 555 freebsd 或centos 7.4 实现代理视频直播服务
    [教学] Log.d 日志调试查看(所有平台)
    [示例] 使用 TStopwatch 计时
    [安裝] Ubuntu Server 初试
    [改善] dcef3 for Firemonkey 浏览器控件,拉动窗体大小会闪烁的问题
    [示例] Drag And Drop for FireMonkey (Win & macOS)
    [原创] 改善 Firemonkey Canvas 几何绘图质量问题(移动平台)
    [示例] Firemonkey 画出 1 点像素的线
    [修正] Firemonkey TFrame 存档后,下次载入某些事件连结会消失(但源码还在)
    [问答] Firemonkey 控件继承后无法显示(空白)
  • 原文地址:https://www.cnblogs.com/gett/p/5051151.html
Copyright © 2011-2022 走看看