gpt4 book ai didi

Angular:如何从另一个组件访问 ActivatedRoute 快照数据

转载 作者:太空狗 更新时间:2023-10-29 17:19:10 26 4
gpt4 key购买 nike

我正在使用 Angular2 Material Toolbar我想将当前页面标题传递给它。

我的 app.component 有一个头部组件和当前页面组件:

@Component({
selector: 'mi-root',
template: `
<mi-header></mi-header>
<router-outlet></router-outlet>
`
})

export class AppComponent {
constructor() {}
}

在我的 app.routing 中,我有一个带有自定义 title 属性的路由对象:

const APP_ROUTES: Routes = [
{
path: '',
component: HomeComponent,
data: {
title: 'Home'
}
}, {
path: 'settings',
component: SettingsComponent,
data: {
title: 'Settings'
}
}
];

现在我想从我的 header.component 访问 data.title 属性,但不幸的是它是未定义的。我的 data 对象是空的:

import { Component, OnInit } from '@angular/core';
import { ActivatedRoute} from '@angular/router';

@Component({
selector: 'mi-header',
template: `
<md-toolbar color="primary">
<span class="u-ml">{{title}}</span>
</md-toolbar>
`,
styles: []
})

export class HeaderComponent implements OnInit {
title: string;

constructor(private route: ActivatedRoute) {
this.title = this.route.snapshot.data['title'];
}
}

如果我尝试以相同的方式访问相同的属性,但是从 HomeComponentSettingsComponent 它工作正常:

import { Component } from '@angular/core';
import { ActivatedRoute } from '@angular/router';

@Component({
selector: 'mi-settings',
template: `
<h1>Welcome to {{title}} screen</h1>
`,
styles: []
})

export class SettingsComponent {
title: string;

constructor(private route: ActivatedRoute) {
this.title = route.snapshot.data['title'];
}
}

那么,如何从我的 HeaderComponent 访问 route.snapshot.data['title']

最佳答案

  constructor(router:Router, route:ActivatedRoute) {
router.events
.filter(e => e instanceof NavigationEnd)
.forEach(e => {
console.log('title', route.root.firstChild.snapshot.data.title);
}
}

Plunker example

关于Angular:如何从另一个组件访问 ActivatedRoute 快照数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42398702/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com