Angular 7 btw。
我正在尝试为每个路由设置自定义标题,但是某些标题需要仅路由组件具有的信息(即,路由包含用户ID,但标题应包含用户名)。
我最初进入每个路由组件,并在加载必要的数据后在ngOnInit
中设置标题(使用Title.setTitle()),但是某些路由使用相同的组件-例如/user
和/user/edit
可能都使用User组件,但是/user/edit
会触发一个弹出窗口。弹出窗口会更改标题,并且在关闭后,标题应返回到/user
上的标题,但是未调用ngOnInit
,因为该组件从未销毁。
我想知道如何正确解决此问题。我绝对可以做到,但是它将需要很多代码,而且似乎很容易出错。有没有我没有看到的干净解决方案?
答案 0 :(得分:1)
import {Component, OnInit} from '@angular/core';
import {Title} from '@angular/platform-browser';
@Component({
selector: 'app-privacy',
templateUrl: './privacy.component.html',
styleUrls: ['./privacy.component.scss']
})
export class PrivacyComponent implements OnInit {
constructor(private title: Title) {
this.setMetaAndTitle();
}
ngOnInit() {
}
setMetaAndTitle() {
this.title.setTitle('Privacy - All you need to know');
}
}
您需要的是从Title
导入@angular/platform-browser
并按照说明使用
答案 1 :(得分:0)
尝试传递路由参数,并订阅queryParams()
this.activatedRoute.queryParams.subscribe(data => {})
或使用路由器事件跟踪路线更改