docs: refactor revert() and call to lifecylce hook, edit doc to changes (#22094)

PR Close #22094
This commit is contained in:
Kapunahele Wong 2018-02-07 15:41:16 -05:00 committed by Kara Erickson
parent 73c203fda9
commit 2ca77d80ec
14 changed files with 461 additions and 506 deletions

View File

@ -6,32 +6,38 @@ import { BrowserModule } from '@angular/platform-browser';
import { ReactiveFormsModule } from '@angular/forms'; // <-- #1 import module import { ReactiveFormsModule } from '@angular/forms'; // <-- #1 import module
import { AppComponent } from './app.component'; import { AppComponent } from './app.component';
import { HeroDetailComponent } from './hero-detail/hero-detail.component'; // <-- #1 import component import { HeroDetailComponent } from './hero-detail/hero-detail.component';
// #enddocregion v1 // #enddocregion v1
// #docregion hero-service-list
// add JavaScript imports
import { HeroListComponent } from './hero-list/hero-list.component'; import { HeroListComponent } from './hero-list/hero-list.component';
import { HeroService } from './hero.service';
import { HeroService } from './hero.service'; // <-- #1 import service
// #docregion v1 // #docregion v1
@NgModule({ @NgModule({
imports: [
BrowserModule,
ReactiveFormsModule // <-- #2 add to @NgModule imports
],
declarations: [ declarations: [
AppComponent, AppComponent,
HeroDetailComponent, HeroDetailComponent,
// #enddocregion v1 // #enddocregion v1
HeroListComponent HeroListComponent // <--declare HeroListComponent
// #docregion v1 // #docregion v1
], ],
// #enddocregion v1 // #enddocregion hero-service-list
exports: [ // export for the DemoModule imports: [
BrowserModule,
ReactiveFormsModule // <-- #2 add to @NgModule imports
],
// #enddocregion v1
// export for the DemoModule
// #docregion hero-service-list
// ...
exports: [
AppComponent, AppComponent,
HeroDetailComponent, HeroDetailComponent,
HeroListComponent HeroListComponent // <-- export HeroListComponent
], ],
providers: [ HeroService ], // <-- #4 provide HeroService providers: [ HeroService ], // <-- provide HeroService
// #enddocregion hero-service-list
// #docregion v1 // #docregion v1
bootstrap: [ AppComponent ] bootstrap: [ AppComponent ]
}) })

View File

@ -1,7 +1,7 @@
<!-- #docregion basic-form--> <!-- #docregion basic-form-->
<h2>Hero Detail</h2> <h2>Hero Detail</h2>
<h3><i>FormControl in a FormGroup</i></h3> <h3><i>FormControl in a FormGroup</i></h3>
<form [formGroup]="heroForm" novalidate> <form [formGroup]="heroForm">
<div class="form-group"> <div class="form-group">
<label class="center-block">Name: <label class="center-block">Name:
<input class="form-control" formControlName="name"> <input class="form-control" formControlName="name">

View File

@ -1,7 +1,7 @@
<!-- #docregion basic-form--> <!-- #docregion basic-form-->
<h2>Hero Detail</h2> <h2>Hero Detail</h2>
<h3><i>A FormGroup with a single FormControl using FormBuilder</i></h3> <h3><i>A FormGroup with a single FormControl using FormBuilder</i></h3>
<form [formGroup]="heroForm" novalidate> <form [formGroup]="heroForm">
<div class="form-group"> <div class="form-group">
<label class="center-block">Name: <label class="center-block">Name:
<input class="form-control" formControlName="name"> <input class="form-control" formControlName="name">
@ -13,4 +13,4 @@
<!-- #docregion form-value-json --> <!-- #docregion form-value-json -->
<p>Form value: {{ heroForm.value | json }}</p> <p>Form value: {{ heroForm.value | json }}</p>
<p>Form status: {{ heroForm.status | json }}</p> <p>Form status: {{ heroForm.status | json }}</p>
<!-- #enddocregion form-value-json --> <!-- #enddocregion form-value-json -->

View File

@ -1,7 +1,7 @@
<!-- #docregion --> <!-- #docregion -->
<h2>Hero Detail</h2> <h2>Hero Detail</h2>
<h3><i>A FormGroup with multiple FormControls</i></h3> <h3><i>A FormGroup with multiple FormControls</i></h3>
<form [formGroup]="heroForm" novalidate> <form [formGroup]="heroForm">
<div class="form-group"> <div class="form-group">
<label class="center-block">Name: <label class="center-block">Name:
<input class="form-control" formControlName="name"> <input class="form-control" formControlName="name">

View File

@ -1,5 +1,5 @@
<form [formGroup]="heroForm" novalidate> <form [formGroup]="heroForm">
<div class="form-group"> <div class="form-group">
<label class="center-block">Name: <label class="center-block">Name:
<input class="form-control" formControlName="name"> <input class="form-control" formControlName="name">

View File

@ -1,7 +1,7 @@
<!-- #docregion --> <!-- #docregion -->
<h2>Hero Detail</h2> <h2>Hero Detail</h2>
<h3><i>PatchValue to initialize a value</i></h3> <h3><i>PatchValue to initialize a value</i></h3>
<form [formGroup]="heroForm" novalidate> <form [formGroup]="heroForm">
<div class="form-group"> <div class="form-group">
<label class="center-block">Name: <label class="center-block">Name:
<input class="form-control" formControlName="name"> <input class="form-control" formControlName="name">

View File

@ -44,7 +44,13 @@ export class HeroDetailComponent6 implements OnChanges {
} }
// #docregion patch-value-on-changes // #docregion patch-value-on-changes
ngOnChanges() { // <-- wrap patchValue in ngOnChanges ngOnChanges() { // <-- call rebuildForm in ngOnChanges
this.rebuildForm();
}
// #enddocregion patch-value-on-changes
// #docregion patch-value-rebuildform
rebuildForm() { // <-- wrap patchValue in rebuildForm
this.heroForm.reset(); this.heroForm.reset();
// #docregion patch-value // #docregion patch-value
this.heroForm.patchValue({ this.heroForm.patchValue({
@ -52,7 +58,9 @@ export class HeroDetailComponent6 implements OnChanges {
}); });
// #enddocregion patch-value // #enddocregion patch-value
} }
// #enddocregion patch-value-on-changes // #enddocregion patch-value-rebuildform
} }
// #enddocregion v6 // #enddocregion v6

View File

@ -1,7 +1,7 @@
<!-- #docregion --> <!-- #docregion -->
<h2>Hero Detail</h2> <h2>Hero Detail</h2>
<h3><i>A FormGroup with multiple FormControls</i></h3> <h3><i>A FormGroup with multiple FormControls</i></h3>
<form [formGroup]="heroForm" novalidate> <form [formGroup]="heroForm">
<div class="form-group"> <div class="form-group">
<label class="center-block">Name: <label class="center-block">Name:
<input class="form-control" formControlName="name"> <input class="form-control" formControlName="name">

View File

@ -38,32 +38,31 @@ export class HeroDetailComponent7 implements OnChanges {
// #docregion ngOnChanges // #docregion ngOnChanges
ngOnChanges() { ngOnChanges() {
this.rebuildForm();
}
// #enddocregion ngOnChanges
// #docregion rebuildForm
rebuildForm() {
this.heroForm.reset({ this.heroForm.reset({
name: this.hero.name, name: this.hero.name,
address: this.hero.addresses[0] || new Address()
});
}
// #enddocregion ngOnChanges
/* First version of ngOnChanges
// #docregion ngOnChanges-1
ngOnChanges()
// #enddocregion ngOnChanges-1
*/
ngOnChanges1() {
// #docregion reset
this.heroForm.reset();
// #enddocregion reset
// #docregion ngOnChanges-1
// #docregion set-value
this.heroForm.setValue({
name: this.hero.name,
// #docregion set-value-address // #docregion set-value-address
address: this.hero.addresses[0] || new Address() address: this.hero.addresses[0] || new Address()
// #enddocregion set-value-address // #enddocregion set-value-address
}); });
}
// #enddocregion rebuildForm
/* First version of rebuildForm */
rebuildForm1() {
// #docregion reset
this.heroForm.reset();
// #enddocregion reset
// #docregion set-value
this.heroForm.setValue({
name: this.hero.name,
address: this.hero.addresses[0] || new Address()
});
// #enddocregion set-value // #enddocregion set-value
} }
// #enddocregion ngOnChanges-1
} }

View File

@ -1,7 +1,7 @@
<!-- #docplaster--> <!-- #docplaster-->
<h3><i>Using FormArray to add groups</i></h3> <h3><i>Using FormArray to add groups</i></h3>
<form [formGroup]="heroForm" novalidate> <form [formGroup]="heroForm">
<p>Form Changed: {{ heroForm.dirty }}</p> <p>Form Changed: {{ heroForm.dirty }}</p>
<div class="form-group"> <div class="form-group">
@ -11,7 +11,9 @@
</div> </div>
<!-- #docregion form-array--> <!-- #docregion form-array-->
<!-- #docregion form-array-skeleton --> <!-- #docregion form-array-skeleton -->
<!-- #docregion form-array-name -->
<div formArrayName="secretLairs" class="well well-lg"> <div formArrayName="secretLairs" class="well well-lg">
<!-- #enddocregion form-array-name -->
<div *ngFor="let address of secretLairs.controls; let i=index" [formGroupName]="i" > <div *ngFor="let address of secretLairs.controls; let i=index" [formGroupName]="i" >
<!-- The repeated address template --> <!-- The repeated address template -->
<!-- #enddocregion form-array-skeleton --> <!-- #enddocregion form-array-skeleton -->

View File

@ -39,12 +39,18 @@ export class HeroDetailComponent8 implements OnChanges {
// #docregion onchanges // #docregion onchanges
ngOnChanges() { ngOnChanges() {
this.rebuildForm();
}
// #enddocregion onchanges
// #docregion rebuildform
rebuildForm() {
this.heroForm.reset({ this.heroForm.reset({
name: this.hero.name name: this.hero.name
}); });
this.setAddresses(this.hero.addresses); this.setAddresses(this.hero.addresses);
} }
// #enddocregion onchanges // #enddocregion rebuildform
// #docregion get-secret-lairs // #docregion get-secret-lairs
get secretLairs(): FormArray { get secretLairs(): FormArray {

View File

@ -1,11 +1,11 @@
<!-- #docplaster --> <!-- #docplaster -->
<!-- #docregion --> <!-- #docregion -->
<!-- #docregion buttons --> <!-- #docregion buttons -->
<form [formGroup]="heroForm" (ngSubmit)="onSubmit()" novalidate> <form [formGroup]="heroForm" (ngSubmit)="onSubmit()">
<div style="margin-bottom: 1em"> <div style="margin-bottom: 1em">
<button type="submit" <button type="submit"
[disabled]="heroForm.pristine" class="btn btn-success">Save</button> &nbsp; [disabled]="heroForm.pristine" class="btn btn-success">Save</button> &nbsp;
<button type="reset" (click)="revert()" <button type="button" (click)="revert()"
[disabled]="heroForm.pristine" class="btn btn-danger">Revert</button> [disabled]="heroForm.pristine" class="btn btn-danger">Revert</button>
</div> </div>

View File

@ -13,7 +13,10 @@ import { HeroService } from '../hero.service';
templateUrl: './hero-detail.component.html', templateUrl: './hero-detail.component.html',
styleUrls: ['./hero-detail.component.css'] styleUrls: ['./hero-detail.component.css']
}) })
// #docregion onchanges-implementation
export class HeroDetailComponent implements OnChanges { export class HeroDetailComponent implements OnChanges {
// #enddocregion onchanges-implementation
@Input() hero: Hero; @Input() hero: Hero;
heroForm: FormGroup; heroForm: FormGroup;
@ -42,6 +45,10 @@ export class HeroDetailComponent implements OnChanges {
} }
ngOnChanges() { ngOnChanges() {
this.rebuildForm();
}
rebuildForm() {
this.heroForm.reset({ this.heroForm.reset({
name: this.hero.name name: this.hero.name
}); });
@ -66,7 +73,7 @@ export class HeroDetailComponent implements OnChanges {
onSubmit() { onSubmit() {
this.hero = this.prepareSaveHero(); this.hero = this.prepareSaveHero();
this.heroService.updateHero(this.hero).subscribe(/* error handling */); this.heroService.updateHero(this.hero).subscribe(/* error handling */);
this.ngOnChanges(); this.rebuildForm();
} }
// #enddocregion on-submit // #enddocregion on-submit
@ -92,7 +99,7 @@ export class HeroDetailComponent implements OnChanges {
// #enddocregion prepare-save-hero // #enddocregion prepare-save-hero
// #docregion revert // #docregion revert
revert() { this.ngOnChanges(); } revert() { this.rebuildForm(); }
// #enddocregion revert // #enddocregion revert
// #docregion log-name-change // #docregion log-name-change

File diff suppressed because it is too large Load Diff