@@ -2,6 +2,8 @@ import { Component, signal } from '@angular/core';
2
2
3
3
import { FormAction } from '@analogjs/router' ;
4
4
5
+ import { type NewsletterSubmitResponse } from './newsletter.server' ;
6
+
5
7
type FormErrors =
6
8
| {
7
9
email ?: string ;
@@ -15,34 +17,37 @@ type FormErrors =
15
17
template : `
16
18
<h3>Newsletter Signup</h3>
17
19
18
- @if (!signedUp()) {
19
- <form
20
- method="post"
21
- (onSuccess)="onSuccess()"
22
- (onError)="onError($any($event))"
23
- (onStateChange)="errors.set(undefined)"
24
- >
25
- <div>
26
- <label for="email"> Email </label>
27
- <input type="email" name="email" />
20
+ @if (signedUpEmail()) {
21
+ <div id="signup-message">
22
+ Thanks for signing up, {{ signedUpEmail() }}!
28
23
</div>
29
-
30
- <button class="button" type="submit">Submit</button>
31
- </form>
32
-
33
- @if (errors()?.email) {
34
- <p>{{ errors()?.email }}</p>
35
- } } @else {
36
- <div>Thanks for signing up!</div>
24
+ } @else {
25
+ <form
26
+ method="post"
27
+ (onSuccess)="onSuccess($any($event))"
28
+ (onError)="onError($any($event))"
29
+ (onStateChange)="errors.set(undefined)"
30
+ >
31
+ <div>
32
+ <label for="email"> Email </label>
33
+ <input type="email" name="email" />
34
+ </div>
35
+
36
+ <button class="button" type="submit">Submit</button>
37
+ </form>
38
+
39
+ @if (errors()?.email) {
40
+ <p>{{ errors()?.email }}</p>
41
+ }
37
42
}
38
43
` ,
39
44
} )
40
45
export default class NewsletterComponent {
41
- signedUp = signal ( false ) ;
46
+ signedUpEmail = signal ( '' ) ;
42
47
errors = signal < FormErrors > ( undefined ) ;
43
48
44
- onSuccess ( ) {
45
- this . signedUp . set ( true ) ;
49
+ onSuccess ( res : NewsletterSubmitResponse ) {
50
+ this . signedUpEmail . set ( res . email ) ;
46
51
}
47
52
48
53
onError ( result ?: FormErrors ) {
0 commit comments