Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 角度通用服务器端渲染,元标记_Angular_Meta Tags_Angular Universal - Fatal编程技术网

Angular 角度通用服务器端渲染,元标记

Angular 角度通用服务器端渲染,元标记,angular,meta-tags,angular-universal,Angular,Meta Tags,Angular Universal,我把我的网站搬到了Angular universal SSR, 在我搬家的过程中,我遇到了一些我认为ng universal会解决的问题 我想添加元标签,如描述,关键字等(每个页面不同) 使用标题服务可以很好地工作,它改变了页面的标题。然而,如果我登陆主页,然后从主页导航到其他页面,标题不会改变,但当我查看源代码时,我在源代码中看到了变化,但在视图选项卡上没有。如果我登陆页面(或点击刷新),页面将更新为正确的标题 我尝试添加标题元标记的附加内容,但没有任何效果: this.meta.update

我把我的网站搬到了Angular universal SSR, 在我搬家的过程中,我遇到了一些我认为ng universal会解决的问题

我想添加元标签,如描述,关键字等(每个页面不同)

使用
标题服务
可以很好地工作,它改变了页面的标题。然而,如果我登陆主页,然后从主页导航到其他页面,标题不会改变,但当我查看源代码时,我在源代码中看到了变化,但在视图选项卡上没有。如果我登陆页面(或点击刷新),页面将更新为正确的标题

我尝试添加标题元标记的附加内容,但没有任何效果:

this.meta.updateTag( {name: "description", content: 'test1234});

this.meta.addTag({name: 'description', content: 'Content description' });

使用vanilaJS
var doc=(document.getElementById('description');
doc.content=“test1234”;
标头部分中的元没有更改。 我不知道为什么。 任何帮助都有帮助。。
感谢

为Angular Universal SSR设置元标记(仅在Angular 2上试用),您应该使用渲染器。 要设置例如标题(或更新标题),可以通过以下方式进行:

要设置元标记,您需要: 1.导入渲染器和文档

import { Renderer } from '@angular/core';
import { DOCUMENT } from '@angular/platform-browser';
2.将这些依赖项添加到构造函数:

@Inject(DOCUMENT) private document: any,
private renderer: Renderer
3.添加元标记 -范例

  • 当您打开“查看页面源代码”时,在head标记内部应该是这样的结果:


  • 看这可能会有帮助,我遵循同样的方法,它对我很有效。确保您使用的是angular cli和angular的正确版本。您是否找到了发生这种情况的原因?我也有同样的问题。你认为它也适用于动态数据吗?比如对OnInit的api调用?对我来说也是一样。动态元标记不起作用。如果元标记是硬编码的,那么它可以工作。
    @Inject(DOCUMENT) private document: any,
    private renderer: Renderer
    
    //-- Create new meta element inside of head tag
    let elem = renderer.createElement(document.head, "meta");
    
    //-- Set meta attributes
    renderer.setElementAttribute(elem, 'name', 'description');
    renderer.setElementAttribute(elem, 'content', 'Some test decription');