答案 0 :(得分:10)
来自angular docs:
Title
由于Angular应用程序无法在整个HTML文档(
<html>
标记)上进行自举,因此无法绑定到HTMLTitleElement元素的text属性(表示<title>
标记)。相反,此服务可用于设置和获取当前标题值。
您只需将Title
服务与TranslateService
export class SomeComponent {
constructor(private title:Title, private translate:TranslateService){}
ngOnInit(){
this.translateService.get("document.name").subscribe(name=>{
this.title.setTitle(name);
});
}
}
请同时查看this cookbook。
答案 1 :(得分:1)
我正在将ngx-translate与xliffmerge配合使用,以防止覆盖现有文本并将新文本自动添加到xlf文件中。但是仅当模板中存在文本时才添加文本。因此,可接受的答案不是我想要的。
相反,我创建了一个指令,可以用来在每个页面的html元素中添加标题。现在,标题会自动翻译,然后该指令将获取文本并通过Angulars标题服务更改标题。
指令:
componentDidMount()/componentWillMount()/ even in render(){}
然后在必须更改标题的任何页面(组件)上,例如显示字词的页面:
import { Directive, ElementRef, AfterContentInit } from '@angular/core';
import { Title } from '@angular/platform-browser';
@Directive({
selector: '[edHeadTitle]'
})
export class HeadTitleDirective implements AfterContentInit{
constructor(private el: ElementRef,private titleService: Title) {}
ngAfterContentInit(){
this.titleService.setTitle(this.el.nativeElement.innerHTML);
}
}
如果您不希望标题显示在页面上,只需在headerTitle css类中设置“ display:none”。