我想从url获取令牌,但是它返回null作为值。
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 有解决方案吗?
答案 0 :(得分:0)
您的方法还可以,还有另一个概念上的问题:
您正在尝试将路径与根组件相关联。
您的根模块很可能像这样:
@NgModule({
imports: [
RouterModule.forRoot(...)
],
declarations:[
...
AppComponent,
...
],
boostrap: [AppComponent]
})
export class AppModule {}
框架在引导步骤中实例化的AppComponent
的第一个实例将用作根组件,因此,注入的{{ 1}}会与您的路线定义“分离”。
此外,通过ActivatedRoute
指令解析的AppComponent
实例将知道您的路由定义。
您可以在following stackblitz中自行检查。
注入到RouterOutlet
的第一个实例中的ActivatedRoute
实例不会以异步或同步方式反映路由参数。
如果导航到类似AppComponent
的地方,则{url}/#/bla
会解决AppComponent
的第二个实例。插入其中的<router-outlet>
实例将反映两个同步的路由参数值。和异步。
答案 1 :(得分:-1)
将代码更改为
this.route.paramMap.subscribe(params => { console.log(params.get('token'));})
答案 2 :(得分:-1)
尝试像这样抓住它。
this.route.snapshot.params["token"]
答案 3 :(得分:-1)
ngOnInit(){
const token = this.activatedRout.snapshot.params.token;
}