11import 'zone.js'
2- import { Component } from '@angular/core'
2+ import { Component , inject } from '@angular/core'
33import { bootstrapApplication } from '@angular/platform-browser'
4- import { provideRouter , RouterOutlet , RouterLink , type Routes } from '@angular/router'
4+ import { provideRouter , RouterOutlet , RouterLink , ActivatedRoute , type Routes } from '@angular/router'
5+ import { NgIf } from '@angular/common'
56import { datadogRum } from '@datadog/browser-rum'
67import { angularPlugin , provideDatadogRouter , provideDatadogErrorHandler } from '@datadog/browser-rum-angular'
78
@@ -26,10 +27,11 @@ if (window.RUM_CONTEXT) {
2627 imports : [ RouterLink ] ,
2728 template : `
2829 <h1>Initial Route</h1>
29- <a routerLink="/parameterized/42">Go to Parameterized Route</a><br />
30+ <a routerLink="/user/42" [queryParams]="{ admin: 'true' }">Go to User 42</a><br />
31+ <a routerLink="/guides/123">Go to Guides 123</a><br />
32+ <a routerLink="/error-test">Go to Error Test</a><br />
3033 <a routerLink="/parent/nested">Go to Nested Route</a><br />
3134 <a routerLink="/unknown/page">Go to Wildcard Route</a><br />
32- <a id="query-param-link" [routerLink]="[]" [queryParams]="{ tab: 2 }">Change Query Param</a><br />
3335 <button id="throw-error" (click)="throwError()">Throw Error</button>
3436 <button id="throw-error-with-context" (click)="throwErrorWithContext()">Throw Error With Context</button>
3537 ` ,
@@ -47,11 +49,50 @@ class InitialRouteComponent {
4749}
4850
4951@Component ( {
50- selector : 'app-parameterized -route' ,
52+ selector : 'app-user -route' ,
5153 standalone : true ,
52- template : '<h1>Parameterized Route</h1>' ,
54+ imports : [ RouterLink ] ,
55+ template : `
56+ <h1>User Page</h1>
57+ <a routerLink="/">Back to Home</a><br />
58+ <a [routerLink]="['/user', id]" fragment="section">Go to Section</a><br />
59+ <a [routerLink]="['/user', id]" [queryParams]="{ admin: 'false' }">Change query params</a><br />
60+ <a [routerLink]="['/user', '999']" [queryParams]="{ admin: 'true' }">Go to User 999</a>
61+ ` ,
62+ } )
63+ class UserRouteComponent {
64+ protected id = inject ( ActivatedRoute ) . snapshot . params [ 'id' ] as string
65+ }
66+
67+ @Component ( {
68+ selector : 'app-guides-route' ,
69+ standalone : true ,
70+ imports : [ RouterLink ] ,
71+ template : `
72+ <h1>Guides</h1>
73+ <a routerLink="/">Back to Home</a>
74+ ` ,
5375} )
54- class ParameterizedRouteComponent { }
76+ class GuidesRouteComponent { }
77+
78+ @Component ( {
79+ selector : 'app-error-test-route' ,
80+ standalone : true ,
81+ imports : [ NgIf ] ,
82+ template : `
83+ <h1>Error Test</h1>
84+ <button data-testid="trigger-error" (click)="triggerError()">Trigger Error</button>
85+ <div *ngIf="hasError" data-testid="error-handled">Error occurred</div>
86+ ` ,
87+ } )
88+ class ErrorTestRouteComponent {
89+ hasError = false
90+
91+ triggerError ( ) {
92+ this . hasError = true
93+ throw new Error ( 'Error triggered by button click' )
94+ }
95+ }
5596
5697@Component ( {
5798 selector : 'app-nested-route' ,
@@ -70,14 +111,8 @@ class WildcardRouteComponent {}
70111@Component ( {
71112 selector : 'app-root' ,
72113 standalone : true ,
73- imports : [ RouterOutlet , RouterLink ] ,
74- template : `
75- <nav>
76- <a routerLink="/">Initial Route</a>
77- <a routerLink="/parameterized/42">Parameterized Route</a>
78- </nav>
79- <router-outlet></router-outlet>
80- ` ,
114+ imports : [ RouterOutlet ] ,
115+ template : '<router-outlet></router-outlet>' ,
81116} )
82117class AppComponent { }
83118
@@ -86,7 +121,9 @@ const nestedRoutes: Routes = [{ path: 'nested', component: NestedRouteComponent
86121
87122const routes : Routes = [
88123 { path : '' , component : InitialRouteComponent } ,
89- { path : 'parameterized/:id' , component : ParameterizedRouteComponent } ,
124+ { path : 'user/:id' , component : UserRouteComponent } ,
125+ { path : 'guides/:slug' , component : GuidesRouteComponent } ,
126+ { path : 'error-test' , component : ErrorTestRouteComponent } ,
90127 { path : 'parent' , loadChildren : ( ) => Promise . resolve ( nestedRoutes ) } ,
91128 { path : '**' , component : WildcardRouteComponent } ,
92129]
0 commit comments