本文介绍了订阅Angular2中的router.events.subscribe时如何从Route或ActivatedRoute获取数据?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
每当路由更改时,我都试图从路由器获取数据,但是我没有成功.在这里设置asdf
属性
I'm trying to get the data from a Router whenever the Route changes but I'm not having success. Here I set the asdf
property
@NgModule({
bootstrap: [AppComponent],
declarations: [
AppComponent,
LoginComponent,
DashboardComponent,
OverviewComponent,
],
imports: [
BrowserModule,
FormsModule,
RouterModule.forRoot([
{ path: '', pathMatch: 'full', redirectTo: '' },
{ component: LoginComponent, path: 'login' },
{
children: [
{ path: '', pathMatch: 'full', redirectTo: 'overview', data: { asdf: 'hello' } },
{ component: OverviewComponent, path: 'overview', data: { asdf: 'hello' } },
], component: DashboardComponent,
path: '',
},
]),
],
})
export class AppModule { }
在这里,当路由更改但asdf
未定义时,我可以从路由器获取URL:(
And here I can get the URL from the router when the route changes but asdf
is undefined :(
import { Component, OnDestroy, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { ActivatedRoute, NavigationEnd } from '@angular/router';
@Component({
selector: 'cs-map',
styleUrls: ['map.component.css'],
templateUrl: 'map.component.html',
})
export class MapComponent implements OnInit {
private routerSub;
constructor(private router: Router, private activatedRoute: ActivatedRoute) { }
public ngOnInit() {
this.router.events.subscribe((val) => {
if (val instanceof NavigationEnd) {
let url = val.url;
console.log(this.activatedRoute.snapshot.data['asdf']); // data is defined but asdf is not :(
}
});
}
}
如何获取asdf
的值?
我正在导航至/overview
推荐答案
没有 while 循环
constructor(private router: Router,
private activatedRoute: ActivatedRoute)
{
this.router.events
.filter(event => event instanceof NavigationEnd)
.map(() => this.activatedRoute)
.map(route => route.firstChild)
.switchMap(route => route.data)
.map(data => data['asdf'])
}
这篇关于订阅Angular2中的router.events.subscribe时如何从Route或ActivatedRoute获取数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!