diff --git a/apps/rxjs/14-race-condition/src/app/app.component.ts b/apps/rxjs/14-race-condition/src/app/app.component.ts
index a7eb77710..8b241d812 100644
--- a/apps/rxjs/14-race-condition/src/app/app.component.ts
+++ b/apps/rxjs/14-race-condition/src/app/app.component.ts
@@ -1,39 +1,32 @@
-import {
- ChangeDetectionStrategy,
- Component,
- inject,
- OnInit,
-} from '@angular/core';
+import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
+import { toSignal } from '@angular/core/rxjs-interop';
import { MatDialog } from '@angular/material/dialog';
+import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
import { take } from 'rxjs';
import { TopicModalComponent } from './topic-dialog.component';
-import { TopicService, TopicType } from './topic.service';
+import { TopicService } from './topic.service';
@Component({
standalone: true,
selector: 'app-root',
+ imports: [MatProgressSpinnerModule],
template: `
-
+ @if (topics()) {
+
+ }
`,
changeDetection: ChangeDetectionStrategy.OnPush,
})
-export class AppComponent implements OnInit {
+export class AppComponent {
title = 'rxjs-race-condition';
- dialog = inject(MatDialog);
topicService = inject(TopicService);
- topics: TopicType[] = [];
+ matDialog = inject(MatDialog);
+ topics = toSignal(this.topicService.fakeGetHttpTopic().pipe(take(1)));
- ngOnInit(): void {
- this.topicService
- .fakeGetHttpTopic()
- .pipe(take(1))
- .subscribe((topics) => (this.topics = topics));
- }
-
- openTopicModal() {
- this.dialog.open(TopicModalComponent, {
+ openModal(): void {
+ this.matDialog.open(TopicModalComponent, {
data: {
- topics: this.topics,
+ topics: this.topics(),
},
});
}