Javascript 角度路由器从根组件获取子参数
我在我的Javascript 角度路由器从根组件获取子参数,javascript,angular,router,Javascript,Angular,Router,我在我的app.component.html中有这个结构: <app-main-nav></app-main-nav> <router-outlet></router-outlet> 我试图从我的MaiNavComponent中的PostComponent页面访问参数,但它抛出了一个错误 export class MainNavComponent implements OnInit { constructor( private route:
app.component.html
中有这个结构:
<app-main-nav></app-main-nav>
<router-outlet></router-outlet>
我试图从我的MaiNavComponent
中的PostComponent
页面访问参数,但它抛出了一个错误
export class MainNavComponent implements OnInit {
constructor( private route: ActivatedRoute) {
route.params.subscribe(console.log)
}
}
如何从MainNavComponent
获取后组件的:id
我试着这样做:
route.params.subscribe(console.log)
这里我得到一个空的对象
这是:
route.firstChild.params.subscribe(console.log)
无法读取null的属性“params”
问题在于,ActivatedRoute
仅在插座中加载的组件内部可用(route outlet
)。在外部组件中,您可以注入路由器并按如下方式使用它:
export class MainNavComponent implements OnInit {
constructor(private router: Router) {}
ngOnInit() {
// Fires when the url changes
this.router.events.subscribe(data => {
// Only handle final active route
if (data instanceof NavigationEnd) {
// parsedUrl conatins params, queryParams
// and fragments for the active route
let parsedUrl = this.router.parseUrl(this.router.url);
console.log(parsedUrl);
}
});
}
}
我希望这将对您有所帮助。您必须通过快照从URL.Uodate构造函数中获取ID,如下所示
constructor( private route: ActivatedRoute) {
}
ngOnInit() {
// (+) converts string 'id' to a number
let id = +this.route.snapshot.params['id'];
}
构造函数(
专用路由器:路由器,
专用activatedRoute:activatedRoute){
}
恩戈尼尼特(){
this.loadParams();
}
私有loadParams():void{
this.router.events.subscribe(事件=>{
if(NavigationEnd的事件实例){
让activatedRoute=this.activatedRoute.firstChild;
而(!activatedRoute){
activatedRoute=activatedRoute.firstChild;
}
const value=activatedRoute.snapshot.paramMap.get('parmeter key');
}
});
}
否,但参数是空的,它仅在带有参数的路由中起作用,而不是从根组件将while循环修改为while(activatedRoute.firstChild!==null)
并且您的代码对我很有效。谢谢
constructor( private route: ActivatedRoute) {
}
ngOnInit() {
// (+) converts string 'id' to a number
let id = +this.route.snapshot.params['id'];
}