Skip to content

Commit aaa3cc1

Browse files
author
rxlabz
committed
clone (reactive) mdl form v1
1 parent 27cb5ec commit aaa3cc1

File tree

3 files changed

+113
-2
lines changed

3 files changed

+113
-2
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
11
:host{
22

3+
}
4+
5+
.blue {
6+
color: #fff;
7+
background-color: #38b;
8+
}
9+
10+
.column {
11+
display: flex;
12+
flex-direction: column;
313
}

lib/components/md-reactive-form/md-reactive-form.dart

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
import 'dart:convert';
2+
3+
import 'package:angular2/common.dart';
14
import 'package:angular2/core.dart';
25
import 'package:angular2_components/angular2_components.dart';
36

@@ -10,8 +13,52 @@ import 'package:angular2_components/angular2_components.dart';
1013
)
1114
class MdReativeForm implements OnInit{
1215

13-
MdReativeForm(){}
16+
ControlGroup userForm;
17+
18+
MdReativeForm(FormBuilder fb) {
19+
userForm = fb.group({
20+
"name": ['', Validators.required],
21+
"age": [
22+
'',
23+
Validators.compose([
24+
Validators.required,
25+
(AbstractControl c) {
26+
if (c.value == '') return null;
27+
28+
var r = new RegExp('[0-9]*');
29+
if (!r.hasMatch(c.value))
30+
return {'Erreur': 'format incoorect'};
31+
32+
int.parse(c.value) > 0 ? null : {"incorrect": "numérique attendue"};
33+
}
34+
])
35+
],
36+
"genre": [2, Validators.required],
37+
"newsletter": new Control(true)
38+
});
39+
}
1440

1541
@override
1642
ngOnInit() {}
43+
44+
String get value {
45+
return JSON.encode(userForm.value);
46+
}
47+
48+
dynamic getModelValue(String propertyName) {
49+
return userForm.value[propertyName];
50+
}
51+
52+
onSubmit() {
53+
print('FormMDL.onSubmit » value ${value}');
54+
}
55+
56+
/// soit fonction Compo
57+
/// soit ds template : `f.form.controls['genre'].updateValue('2')`
58+
updateModel(String propName, dynamic v) {
59+
print('FormMDL.updateModel » $propName » v ${v}');
60+
(userForm.controls[propName] as Control).updateValue(v);
61+
print('FormMDL.updateModel » value ${value}');
62+
print('FormMDL.updateModel userForm.valid ${userForm.valid}');
63+
}
1764
}
Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,55 @@
1-
<h1>MdReativeForm</h1>
1+
<h1>Material "Reactive" Form</h1>
2+
3+
<div class="card mdl-shadow--2dp column">
4+
5+
<form novalidate [ngFormModel]="userForm" #f="ngForm"
6+
>
7+
<!--(ngSubmit)="onSubmit()"-->
8+
<material-input ngControl="name" floatingLabel required label="Nom">
9+
</material-input>
10+
<!--<div [hidden]="f.form.controls['name'].valid">Requis</div>-->
11+
12+
<div>
13+
<material-input #age type="text" floatingLabel required label="Âge" ngControl="age">
14+
<!--[errorMsg]="f.form.controls['age'].valid?'':'age incorrect'"-->
15+
<!--[numericValue]="getModelValue('age')"-->
16+
<!--(numericValueChange)="updateModel('age', $event)"-->
17+
<!--[numericValue]="getModelValue('age')"-->
18+
<!--[inputText]="getModelValue('age')"-->
19+
<!--pattern="[0-9]*"-->
20+
<!--[numericValue]=""-->
21+
</material-input>
22+
<div [hidden]="f.form.controls['age'].valid">Erreurs : {{f.form.controls['age'].errors.toString()}}</div>
23+
</div>
24+
<div>
25+
Genre
26+
27+
<material-radio-group (selectedChange)="updateModel('genre',$event)">
28+
<material-radio value="1"
29+
[checked]="f.form.controls['genre'].value == 1"
30+
>Femme
31+
</material-radio>
32+
<material-radio value="2"
33+
[checked]="f.form.controls['genre'].value == 2"
34+
>Homme
35+
</material-radio>
36+
37+
</material-radio-group>
38+
</div>
39+
40+
<div>
41+
42+
<material-toggle label="Recevoir newsletter" color="blue-grey"
43+
[checked]="f.form.controls['newsletter'].value"
44+
(checkedChange)="updateModel('newsletter',$event)"
45+
></material-toggle>
46+
</div>
47+
48+
<material-button raised class="blue" type="submit" [disabled]="!f.form.valid"
49+
(click)="onSubmit()"
50+
>
51+
<glyph icon="check"></glyph>
52+
Valider
53+
</material-button>
54+
</form>
55+
</div>

0 commit comments

Comments
 (0)