我需要从 URL 启动我的 ng 应用程序(从服务器获取):
host/app/start/123
然后我想获取该 id (123),并立即重定向到 root,这样用户就不会被 ID 所困扰:
host/app
我在配置路由器和获取该 ID 时遇到问题。
这些是我的路线:
const routes: Routes = [
{ path: 'start/:id', component: AppComponent, pathMatch: 'full' }, // pick up ID and redirect to root from the component
{ path: '', component: AppComponent, pathMatch: 'full' },
{ path: '**', component: PageNotFoundComponent }, // Wildcard route for a 404 page
];
在我的AppComponent中:
...
constructor(
private _router: Router,
private _route: ActivatedRoute
) {}
...
public async ngOnInit() {
console.log('this is always empty?', this._route.snapshot.params); // {}
// I've even tried via subscription:
this._route.params.subscribe((params) => {
console.log('subs params', params); // this prints "{}"
// this._myService.setId(this._route.params['id']);
this._router.navigate(['..']);
});
// ...
}
...所以这个ActivatedRoute对我没有帮助,它总是“空”。
我可以获得
this._router.routerState.snapshot.url
,但随后我必须解析该 URL,但我认为这不是重点。
我缺少什么,正确的方法是什么?
这是一种方法,但我认为这不是正确的方法。如果您需要任何帮助,请告诉我。祝你好运!
// app-routing.module.ts
const routes: Routes = [
{ path: '', pathMatch: 'full', redirectTo: 'start/123' },
{ path: 'start/:id', component: AppComponent },
{ path: '**', component: PageNotFoundComponent }
];
// app.component.ts
export class AppComponent implements OnInit {
constructor(private _activateRoute: ActivatedRoute){}
ngOnInit(): void {
this._activateRoute.params.subscribe((params: Params) => {
console.log('params: ', params);
});
}
}