无法通过根组件中的 route.snapshot 访问路由参数
Unable to access a route parameter through route.snapshot in root component
我想从 url 获取令牌,但它 return 为空值。
app.component.ts:
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent implements OnInit {
constructor(private route: ActivatedRoute) { }
ngOnInit(){
const token = this.route.snapshot.paramMap.get('token');
console.log(token);
和routing.ts
{ path: ':token', component: AppComponent }
我想在 url 之后抓取内容 例如:localhost:4200/content-to-grab
有什么解决办法吗?
将代码更改为
this.route.paramMap.subscribe(params => { console.log(params.get('token'));})
试试这样抢
this.route.snapshot.params["token"]
ngOnInit(){
const token = this.activatedRout.snapshot.params.token;
}
你的方法没问题,还有一个概念问题:
您正在尝试将 路径 关联到 根组件。
很可能,您的根模块看起来像这样:
@NgModule({
imports: [
RouterModule.forRoot(...)
],
declarations:[
...
AppComponent,
...
],
boostrap: [AppComponent]
})
export class AppModule {}
框架在引导步骤中实例化的AppComponent
的第一个实例将用作根组件,并且因此,注入的 ActivatedRoute
将类似于您的路由定义中的 "disconected"。
此外,通过 RouterOutlet
指令解析的 AppComponent
实例将知道您的路由定义。
您可以在following stackblitz中自行查看。
注入到 AppComponent
的第一个实例中的 ActivatedRoute
实例不会以异步或同步方式反映路由参数。
如果您导航到 {url}/#/bla
之类的内容,AppComponent
的第二个实例将由于 <router-outlet>
而被解析。注入其中的 ActivatedRoute
实例将反映路由参数值,两者同步。和异步。
我想从 url 获取令牌,但它 return 为空值。
app.component.ts:
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent implements OnInit {
constructor(private route: ActivatedRoute) { }
ngOnInit(){
const token = this.route.snapshot.paramMap.get('token');
console.log(token);
和routing.ts
{ path: ':token', component: AppComponent }
我想在 url 之后抓取内容 例如:localhost:4200/content-to-grab 有什么解决办法吗?
将代码更改为
this.route.paramMap.subscribe(params => { console.log(params.get('token'));})
试试这样抢
this.route.snapshot.params["token"]
ngOnInit(){
const token = this.activatedRout.snapshot.params.token;
}
你的方法没问题,还有一个概念问题:
您正在尝试将 路径 关联到 根组件。
很可能,您的根模块看起来像这样:
@NgModule({
imports: [
RouterModule.forRoot(...)
],
declarations:[
...
AppComponent,
...
],
boostrap: [AppComponent]
})
export class AppModule {}
框架在引导步骤中实例化的AppComponent
的第一个实例将用作根组件,并且因此,注入的 ActivatedRoute
将类似于您的路由定义中的 "disconected"。
此外,通过 RouterOutlet
指令解析的 AppComponent
实例将知道您的路由定义。
您可以在following stackblitz中自行查看。
注入到 AppComponent
的第一个实例中的 ActivatedRoute
实例不会以异步或同步方式反映路由参数。
如果您导航到 {url}/#/bla
之类的内容,AppComponent
的第二个实例将由于 <router-outlet>
而被解析。注入其中的 ActivatedRoute
实例将反映路由参数值,两者同步。和异步。