【发布时间】:2019-09-09 22:06:51
【问题描述】:
我有一个 Angular Universal 应用,通过在 CLI 上使用这个调用
ng 添加@nguniversal/express-engine --clientProject myapp
我生成了一个 AboutComponent。我使用来自 '@angular/platform-browser' 的 Title 给这个 AboutComponent 赋予它自己的标题。
所以这行得通!在我使用的命令行上
npm run build:ssr
npm run serve:ssr
然后检查 Chrome Dev Tools 中的 View Source 并查看 about 页面的不同标题。
然后我添加一个服务工作者使用
ng 添加@angular/pwa
我现在再次运行 npm run build:ssr 和 npm run serve:ssr 关于页面的 Chrome 开发工具中的 View Source 显示索引中的标题,而不是 AboutComponent 的特定标题。
有没有办法让 Universal 保留每个页面的单独标题并拥有一个服务人员?
这是我的 github:https://github.com/flocela/univ-servworker
谢谢。
编辑:这是我的 about.component.ts 文件:
import { Component, OnInit } from '@angular/core';
import {Title} from '@angular/platform-browser';
@Component({
selector: 'app-about',
templateUrl: './about.component.html',
styleUrls: ['./about.component.sass']
})
export class AboutComponent implements OnInit {
constructor(private title: Title) { }
ngOnInit() {
this.title.setTitle('About');
}
}
【问题讨论】:
-
您是否尝试在每个控制器的 init 事件中设置页面标题?
-
@FarukT 我在 about.component.ts 中设置了标题。这是我除了应用程序组件之外的唯一组件。我已将代码添加到我的问题中。
-
只是想确认一下,您是否尝试注销 Service Worker 然后重新注册?看看它是否有效?
-
取决于 Service Worker 可用于缓存页面这一点。因此,服务人员可能持有不同于新数据的数据。一次无效/注销它可能会显示更新的结果。当然,注销不是显示更新数据的正确方式。但通过这种方式,我们实际上是在尝试调查问题的根本原因。
-
嗨@SumitParakh。您的意思是使用 Chrome 开发工具注销 service worker 吗?当我在 Chrome 开发工具中取消注册服务人员时,“关于”标题确实显示在查看源代码中。除了再次加载应用程序之外,我没有看到如何再次注册 Service Worker。
标签: angular angular-universal angular-service-worker