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>

結果為:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM