Javascript 在用户通过用户页面更新应用程序标题后,如何使其保持静态?

Javascript 在用户通过用户页面更新应用程序标题后,如何使其保持静态?,javascript,angular,routing,Javascript,Angular,Routing,我正在设置应用程序组件模板的标题。标题已通过用户页面上的用户输入进行更新。如何在整个应用程序中提供该标题 我试过使用本地存储,但有没有其他方法可以让它在整个应用程序中都可用 Stackblitz网址: [更新] 当我在我的另一个应用程序上实现同样的功能时,我开始出现错误: Error: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value:

我正在设置应用程序组件模板的标题。标题已通过用户页面上的用户输入进行更新。如何在整个应用程序中提供该标题

我试过使用本地存储,但有没有其他方法可以让它在整个应用程序中都可用

Stackblitz网址:

[更新]

当我在我的另一个应用程序上实现同样的功能时,我开始出现错误:

Error: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'null: Bob'. Current value: 'null: Rob'.
执行以下代码时发生上述错误:

this._userService.titleObs.subscribe((title) => {
      this.title = title;
})
我已经修复了下面的代码,但是有人能建议更好的修复方法吗

this._userService.titleObs.subscribe(
  title => setTimeout(() => this.title = title, 0)
);

正如Maryannah所说,您使用的服务是解决问题的好方法。它不适用于您的原因可能是因为您的服务位于临时文件夹下。如果您将服务放在根文件夹中,所有组件都将能够访问相同的数据。

正如Maryannah所说,您使用的服务是解决问题的好方法。它不适用于您的原因可能是因为您的服务位于临时文件夹下。如果您将服务放在根文件夹中,所有组件都将能够访问相同的数据。

为此使用服务是一种很好的方法。对于导航,您应该使用路由器链接,而不是通过
标记进行导航。这样可以避免重新加载页面。

为此使用服务是一种很好的方法。对于导航,您应该使用路由器链接,而不是通过
标记进行导航。这避免了重新加载页面。

通过添加
ChangeDetectorRef

import { Component, OnInit, ChangeDetectorRef } from '@angular/core';

constructor(
     private ref: ChangeDetectorRef
){}

this._userService.titleObs.subscribe((title) => {
      this.title = title;
      this.ref.detectChanges()
})

通过添加
ChangeDetectorRef

import { Component, OnInit, ChangeDetectorRef } from '@angular/core';

constructor(
     private ref: ChangeDetectorRef
){}

this._userService.titleObs.subscribe((title) => {
      this.title = title;
      this.ref.detectChanges()
})

您使用了服务,这是最好的方式it@Maryannah对但当用户导航到主页时,标题有一个未定义的值。不是在你的闪电战中,它会重新加载页面。但我只是回答你原来的问题,如果你的代码有问题,请详细解释!在Stackblitz中,页面会被重新加载,因为您使用标记进行导航,而不是路由器链接。@riorudo使用routerLink后,它会工作。如果你想发布你的答案,我会接受的。谢谢你使用了服务,这是最好的方式it@Maryannah对但当用户导航到主页时,标题有一个未定义的值。不是在你的闪电战中,它会重新加载页面。但我只是回答你原来的问题,如果你的代码有问题,请详细解释!在Stackblitz中,页面会被重新加载,因为您使用标记进行导航,而不是路由器链接。@riorudo使用routerLink后,它会工作。如果你想发布你的答案,我会接受的。谢谢