自 angular2-dart 测试版以来,我一直在认真学习。我有一个包含以下代码的表单:
html
<div class = "container">
<div [hidden] = "isSubmitted">
<h1>Hero Form</h1>
<div class="md-button"><ng-content></ng-content></div>
<form (ngSubmit) = "onSubmit()"
#heroForm = "ngForm">
{{diagnostic}}
<div class = "form-group">
<label for = "name">Name</label>
<input type = "text"
class = "form-control"
required
[(ngModel)] = "model.name"
ngControl = "name"
#name = "ngForm"
#spy>
<p [hidden] = "name.valid"
class = "alert alert-danger">
Name is required
</p>
TODO: remove this: {{spy.className}}
</div>
<div class = "form-group">
<label for = "alterEgo">Alter Ego</label>
<input type = "text"
class = "form-control"
[(ngModel)] = "model.alterEgo"
ngControl = "alterEgo">
</div>
<div class = "form-group">
<label for = "power">Hero Power</label>
<select class = "form-control"
required
[(ngModel)] = "model.power"
ngControl = "power">
<option *ngFor = "#p of powers"
[value] = "p">{{p}}
</option>
</select>
</div>
<button type = "submit"
class = "btn btn-default"
[disabled] = "!heroForm.form.valid">Submit
</button>
</form>
</div>
。镖
library hero_form.hero_form_component;
import 'package:angular2/angular2.dart';
import 'package:angular2_forms/hero.dart';
import 'package:jsonx/jsonx.dart';
//import 'package:angular2_material/src/components/input/input.dart';
//import 'package:angular2_material/src/components/button/button.dart';
const List<String> _powers = const [
'Really Smart',
'Super Flexible',
'Super Hot',
'Weather Changer'
];
bool isDevelopment = true;
@Component(
selector: 'hero-form',
templateUrl: 'hero_form_component.html',
// Soon specifying directives here will be unnecessary.
directives: const [CORE_DIRECTIVES, FORM_DIRECTIVES] )
class HeroFormComponent {
List<String> get powers => _powers;
bool isSubmitted = false;
Hero model = new Hero( 18, '', _powers[0], 'Chuck Overstreet' );
// TODO: Remove this when we're done
String get diagnostic
{
if(isDevelopment)
{
return 'DIAGNOSTIC: ${encode(model, indent: ' ')}';
}
return '';
}
onSubmit( ) {
// use isSubmitted to to validate and publish instance
isSubmitted = true;
}
}
组件运行时,名称输入已经显示无效状态。避免这种情况的最佳做法是什么。我宁愿最初不显示验证,而是在获得焦点之后显示。
干杯,泰迪