Angular:从登陆 URL 中获取 ID 并重定向到根 url

问题描述 投票:0回答:1

我需要从 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,但我认为这不是重点。

我缺少什么,正确的方法是什么?

angular angular-ui-router angular2-routing
1个回答
0
投票

这是一种方法,但我认为这不是正确的方法。如果您需要任何帮助,请告诉我。祝你好运!

// 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);
    });
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.