6.3 NgControlGroup 命名控件组 - RLwu/angular-start GitHub Wiki
NgControlGroup指令的选择符是[ng-control-group],如果模板中的某个元素具有这个属性, Angular2框架将自动创建一个控件组对象,并将这个对象以指定的名称与DOM对象绑定。
控件组可以嵌套,方便我们在语义上区分不同性质的输入:
和NgControlName指令一样,NgControlGroup指令也必须作为NgForm或NgFormModel的 后代使用,因为这个指令需要将创建的控件组对象添加到祖先(NgForm或NgFormModel)所创建 的控件组中。
- html
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>NgControlGroup</title>
</head>
<body>
<ez-app><img src="img/wait.gif"></ez-app>
<script type="text/javascript" src="lib/angular2.beta.stack.min.js"></script>
</body>
</html>
- ts
import {Component} from "angular2/core";
import {bootstrap} from "angular2/platform/browser";
import {CORE_DIRECTIVES,FORM_DIRECTIVES} from "angular2/common";
@Component({
selector:"ez-app",
directives:[CORE_DIRECTIVES,FORM_DIRECTIVES],
template:`
<form #f="ngForm">
<div>基本信息</div>
<!--声明控件组-->
<ul ngControlGroup="basic">
<li>姓名:<input type="text" ngControl="name"></li>
<li>地址:<input type="text" ngControl="address"></li>
<li>电话:<input type="text" ngControl="telephone"></li>
</ul>
<div>专业技能</div>
<!--声明控件组-->
<ul ngControlGroup="expertise">
<li>英语:<input type="checkbox" ngControl="english"></li>
<li>科技:<input type="checkbox" ngControl="tech"></li>
<li>运动:<input type="checkbox" ngControl="sport"></li>
</ul>
</form>
<!--调试:实时转储模型的值-->
<pre>{{decode(f.value)}}</pre>
`,
styles:[`
div{padding:5px;background:#b3e5fc;color:red;}
form{background:#e1f5fe;}
ul{list-style:none;padding:5px;margin:0px;}
li{line-height:30px;}
`]
})
class EzApp{
decode(val){
return JSON.stringify(val,null,"\t");
}
}
bootstrap(EzApp);