Hi truc,
The URL format "?id=" is used to pass parameters, and Angular uses its paramMap interface to get parameters after ? symbol.
That's by design, I recommed you not change this format.
Of course, you can still change format(and you've changed it), the reason for issue you encountered is that paramMap.get in event.component.ts and sessions.component.ts can't get id parameters from URL
because you had changed it from "event?id=x" to "event/x".
The format "event/x" is more likely to represent a web page instead of it's passing a parameter.
It seems that you had changed routerLink attribute of link element to href attribute, would my guess be right?

To make your URL format works, you should do following steps:(My demo is based on static readableId)
1. Add readableID as a child path to event path in routes.ts.

2. Assign readableEventId(x) to readableEventId variable in event.component.ts,
because sessiontracks, spearkers and passes will all use this value to retrieve data in event.component.ts.
3. Also, assign readableEventId(x) to readableEventId variable in event.component.ts,
because subscribeToEventChange function will be executed when sessions.component.ts onInit event.

4. By doing above steps, then you page could display in customized format.

In a word, you should write custom js code to query last pathname in customized URL instead of querying parameters.
However, the real trouble is that every path names in routes.ts are static, while readableEventId is a dynamic value,
it would be dificult to get URL pathname in routes.ts, and routes.ts will always regards event/a or event/b as a path instead of a parameter.
So my final suggestion is that you should keep origin URL format.
Regards,
Clofly