1
- import { Component , effect , inject , signal } from '@angular/core' ;
1
+ import { Component , inject } from '@angular/core' ;
2
+ import { toSignal } from '@angular/core/rxjs-interop' ;
2
3
import { NavigationEnd , Router , RouterOutlet } from '@angular/router' ;
3
- import { filter , map , tap } from 'rxjs' ;
4
+ import { filter , map } from 'rxjs' ;
4
5
5
6
@Component ( {
6
7
selector : 'app-root' ,
@@ -17,26 +18,18 @@ import { filter, map, tap } from 'rxjs';
17
18
imports : [ RouterOutlet ] ,
18
19
} )
19
20
export class AppComponent {
20
- currentRoute = signal ( 'soba' ) ;
21
-
22
21
private router = inject ( Router ) ;
23
22
24
- constructor ( ) {
25
- effect ( ( onCleanup ) => {
26
- const sub = this . router . events
27
- . pipe (
28
- filter ( ( event ) => event instanceof NavigationEnd ) ,
29
- map ( ( ) => this . router . url ) ,
30
- tap ( ( url ) => {
31
- const [ segment ] = url . split ( '/' ) . filter ( Boolean ) ;
32
- this . currentRoute . set ( segment ) ;
33
- } ) ,
34
- )
35
- . subscribe ( ) ;
36
-
37
- onCleanup ( ( ) => sub . unsubscribe ( ) ) ;
38
- } ) ;
39
- }
23
+ currentRoute = toSignal (
24
+ this . router . events . pipe (
25
+ filter ( ( event ) => event instanceof NavigationEnd ) ,
26
+ map ( ( ) => {
27
+ const [ segment ] = this . router . url . split ( '/' ) . filter ( Boolean ) ;
28
+ return segment ;
29
+ } ) ,
30
+ ) ,
31
+ { initialValue : 'soba' } ,
32
+ ) ;
40
33
41
34
onChange ( event : Event ) {
42
35
const target = event . target as HTMLSelectElement ;
0 commit comments