forked from tomalaforge/angular-challenges
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.component.ts
More file actions
64 lines (56 loc) · 1.63 KB
/
app.component.ts
File metadata and controls
64 lines (56 loc) · 1.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import {
ChangeDetectionStrategy,
Component,
effect,
model,
} from '@angular/core';
import { FormsModule } from '@angular/forms';
@Component({
imports: [FormsModule],
selector: 'app-root',
template: `
<section class="flex gap-5">
<p>MacBook</p>
<p>1999,99 €</p>
</section>
<section>
<p>Extras:</p>
<div>
<input type="checkbox" [(ngModel)]="drive" />
+500 GB drive-space
</div>
<div>
<input type="checkbox" [(ngModel)]="ram" />
+4 GB RAM
</div>
<div>
<input type="checkbox" [(ngModel)]="gpu" />
Better GPU
</div>
</section>
`,
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class AppComponent {
drive = model(false);
ram = model(false);
gpu = model(false);
constructor() {
/*
It occurs because of the place of each signal triggered in the OR condition : the order of the trigger in the condition matter.
If the triggered one is after the one who is already set as true, it will not trigger the alert because, for the condition value didn't change.
Else if the triggered one is before the one who is already set as true, it will trigger the alert.
We must separate the condition into three effect, a condition for each effect.
Want to understand the way to do it with the computed solution. Any clue ?
*/
effect(() => {
this.drive() ? alert('Price increased') : undefined;
});
effect(() => {
this.ram() ? alert('Price increased') : undefined;
});
effect(() => {
this.gpu() ? alert('Price increased') : undefined;
});
}
}