【问题标题】:adding/updating meta tags not working in angular5添加/更新元标记在 angular5 中不起作用
【发布时间】:2018-06-19 06:23:05
【问题描述】:

我使用下面的代码在运行时在 angular5 中添加或更新元标记

import { Title ,Meta} from '@angular/platform-browser'; 
constructor( private meta:Meta)
 {
 this.meta.addTags([
            {name: 'description', content: 'How to use Angular 4 meta 
       service'},
            {name: 'author', content: 'talkingdotnet'},
            {name: 'keywords', content: 'Angular, Meta Service'}
          ]);
this.meta.updateTag({ name: 'description', content: 'Angular 4 meta service' 
 });
  }

在 appmodule 中导入元服务

但它不起作用(不在我的页面源中)。任何人都可以帮助我

谢谢

【问题讨论】:

  • 遇到任何错误?
  • 尝试将此代码添加到您的根组件 .ts 文件中
  • 没有错误。但元中没有更新

标签: javascript angular angular5


【解决方案1】:

你只需要改变:

this.meta.updateTag({ content: 'Angular 4 meta service'} , 'name="description"' );

WORKING DEMO(而不是通过inspect元素查看页面源代码)原因解释如下

您的方法也可以 100% 正常工作,您可以在我给定的演示中进行检查。


Angular 不是从服务器端提供的,这就是为什么你可以看到任何 通过页面查看源的元标记,页面加载后正在更改的任何内容都不会显示在页面查看源中

如果你想检查更新的元标记,你需要检查元素 并在那里检查

如果你想要服务器端渲染,那么你可以选择 Angular Universal

【讨论】:

  • @kamalav,请查看更新后的答案,希望能解决您的所有疑问:)
  • 谢谢,我可以在检查元素时看到元。为什么我在查看页面源时看不到
  • 你能解释一下为什么我在查看页面源代码时看不到
  • @kamalav,请阅读注释,也可以查看 Angular Universal,你会明白的
  • 在 Angular Universal 中没有解释任何关于元标记的内容。元标记出现在检查元素中,但不在视图页面源中。
【解决方案2】:

请尝试使用此模板

import { Component } from '@angular/core';
import { Title, Meta, MetaDefinition } from '@angular/platform-browser';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {

  public constructor(public meta: Meta, public pageTitle: Title) {
    pageTitle.setTitle("MySite.COM");
    const keywords: MetaDefinition = {
      name: "keywords",
      content: "angular2, java, javaEE, angular-universal"
    }
    const description: MetaDefinition = {
      name: "description",
      content: "This is a description"
    }
    this.meta.addTags([keywords, description]);
  }

  title = 'app';
}

更多更新请参考url

【讨论】:

  • 它有效,查看 head 标签内的检查器,您会在最底部看到这些元数据
【解决方案3】:

只需使用addTagsupdateTags 用于现有标签。

只需添加标签

this.meta.addTags([
  {name: 'description', content: 'How to use Angular 4 meta service'},
  {name: 'author', content: 'talkingdotnet'},
  {name: 'keywords', content: 'Angular, Meta Service'}
]);

你会得到以下结果:

进一步与 updateTag 通知描述更改:

this.meta.addTags([ {name: 'description', content: '如何使用 Angular 4 元服务'}, {名称:'作者',内容:'talkingdotnet'}, {名称:'关键字',内容:'Angular,元服务'} ]);

this.meta.updateTag({ name: 'description', content: 'Angular 4 meta service'});

【讨论】:

    【解决方案4】:

    Angular 有一个安全特性,它只会显示 index.html 文件中提供的页面内容。查看此内容的一种方法是在同一页面上检查您的代码。您将能够看到您的元标记及其值。 另一个解决方案是使用Angular Universal,这对 SEO 很有用。通过使用 Angular 通用,您将能够在查看源代码中看到您的页面内容。

    【讨论】:

    • 没有回答问题...实际上是在为一些完全不同的东西做广告...
    猜你喜欢
    • 2019-06-24
    • 2020-11-13
    • 2012-06-30
    • 2018-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-20
    • 1970-01-01
    相关资源
    最近更新 更多