角度-基于路线和组件数据的页面标题

时间:2019-07-23 14:27:27

标签: angular angular-router

Angular 7 btw。

我正在尝试为每个路由设置自定义标题,但是某些标题需要仅路由组件具有的信息(即,路由包含用户ID,但标题应包含用户名)。

我最初进入每个路由组件,并在加载必要的数据后在ngOnInit中设置标题(使用Title.setTitle()),但是某些路由使用相同的组件-例如/user/user/edit可能都使用User组件,但是/user/edit会触发一个弹出窗口。弹出窗口会更改标题,并且在关闭后,标题应返回到/user上的标题,但是未调用ngOnInit,因为该组件从未销毁。

我想知道如何正确解决此问题。我绝对可以做到,但是它将需要很多代码,而且似乎很容易出错。有没有我没有看到的干净解决方案?

2 个答案:

答案 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 => {})

或使用路由器事件跟踪路线更改