I think I'm getting the hang of this...
This commit is contained in:
parent
8b3def5728
commit
a858cbf144
4 changed files with 72 additions and 19 deletions
33
package-lock.json
generated
33
package-lock.json
generated
|
@ -14,7 +14,7 @@
|
|||
"@angular/forms": "^20.0.0",
|
||||
"@angular/platform-browser": "^20.0.0",
|
||||
"@angular/router": "^20.0.0",
|
||||
"@ngrx/component-store": "^19.2.1",
|
||||
"@ngrx/signals": "^19.2.1",
|
||||
"@ngrx/store": "^19.2.1",
|
||||
"@ngrx/store-devtools": "^19.2.1",
|
||||
"rxjs": "~7.8.0",
|
||||
|
@ -2221,19 +2221,6 @@
|
|||
"node": ">= 10"
|
||||
}
|
||||
},
|
||||
"node_modules/@ngrx/component-store": {
|
||||
"version": "19.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@ngrx/component-store/-/component-store-19.2.1.tgz",
|
||||
"integrity": "sha512-a1ghKdR1O2YNQSQfbwC472u+SFK41PDJZuvRIJ8k6B0MKoUWD6LyD4owyrPCUMxtMz9PLoAkch7FUD5qxgY23Q==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"tslib": "^2.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/core": "^19.0.0",
|
||||
"rxjs": "^6.5.3 || ^7.5.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ngrx/schematics": {
|
||||
"version": "19.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@ngrx/schematics/-/schematics-19.2.1.tgz",
|
||||
|
@ -2241,6 +2228,24 @@
|
|||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@ngrx/signals": {
|
||||
"version": "19.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@ngrx/signals/-/signals-19.2.1.tgz",
|
||||
"integrity": "sha512-Tajd2TVjkxxyFMhnMSWLa5pAWfynjP0VM0B/BCMaLiBrwBBxybxRVENoUDU5tGyiKSax/2tBJC3+sOglmxm27A==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"tslib": "^2.3.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/core": "^19.0.0",
|
||||
"rxjs": "^6.5.3 || ^7.4.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"rxjs": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/@ngrx/store": {
|
||||
"version": "19.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@ngrx/store/-/store-19.2.1.tgz",
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
"@angular/forms": "^20.0.0",
|
||||
"@angular/platform-browser": "^20.0.0",
|
||||
"@angular/router": "^20.0.0",
|
||||
"@ngrx/component-store": "^19.2.1",
|
||||
"@ngrx/signals": "^19.2.1",
|
||||
"@ngrx/store": "^19.2.1",
|
||||
"@ngrx/store-devtools": "^19.2.1",
|
||||
"rxjs": "~7.8.0",
|
||||
|
|
|
@ -1 +1,7 @@
|
|||
<p>starting-point works!</p>
|
||||
<h1>
|
||||
Hello {{ name() }}
|
||||
</h1>
|
||||
<form [formGroup]="form">
|
||||
<label for="name">Your Name: </label>
|
||||
<input id="name" type="text" formControlName="name">
|
||||
</form>
|
||||
|
|
|
@ -1,10 +1,52 @@
|
|||
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
||||
import { ChangeDetectionStrategy, Component, computed, inject, OnInit, Signal } from '@angular/core';
|
||||
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
||||
import { FormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';
|
||||
import { StartingPointState, StartingPointStateStore } from './starting-point.state';
|
||||
|
||||
export interface StartingPointForm {
|
||||
name: string;
|
||||
gender: Gender;
|
||||
afterHighSchool: AfterHighSchool;
|
||||
}
|
||||
|
||||
export enum Gender {
|
||||
Undefined = '',
|
||||
Male = 'male',
|
||||
Female = 'female',
|
||||
}
|
||||
|
||||
export enum AfterHighSchool {
|
||||
Undefined = '',
|
||||
College = 'college',
|
||||
Workforce = 'workforce',
|
||||
}
|
||||
|
||||
@Component({
|
||||
selector: 'app-starting-point',
|
||||
imports: [],
|
||||
templateUrl: './starting-point.html',
|
||||
styleUrl: './starting-point.scss',
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
imports: [ReactiveFormsModule],
|
||||
providers: [StartingPointStateStore],
|
||||
})
|
||||
export class StartingPoint {}
|
||||
export class StartingPoint implements OnInit {
|
||||
private readonly state = inject(StartingPointStateStore);
|
||||
readonly name = this.state.name;
|
||||
|
||||
private readonly fb = inject(FormBuilder);
|
||||
readonly form = this.fb.group({
|
||||
name: ['', Validators.required],
|
||||
gender: [Gender.Undefined, Validators.required],
|
||||
afterHighSchool: [AfterHighSchool.Undefined, Validators.required],
|
||||
});
|
||||
|
||||
constructor() {
|
||||
this.form.valueChanges
|
||||
.pipe(takeUntilDestroyed())
|
||||
.subscribe(({ name, gender, afterHighSchool }) =>
|
||||
this.state.updateState({ name, gender, afterHighSchool } as Partial<StartingPointState>)
|
||||
);
|
||||
}
|
||||
|
||||
ngOnInit(): void {}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue