当前位置: 首页 > 知识库问答 >
问题:

通过服务不工作在组件之间共享信息

陈鸿才
2023-03-14

我很难搞清楚这一点,基本上我有一个< code>headerTitleService,我希望能够在我的< code>header组件中动态设置标题,但由于某种原因,当我设置标题时,什么也没有显示?我没有得到任何错误,所以我似乎可以找出问题是什么..

import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';

@Injectable()
export class HeaderTitleService {
  title = new BehaviorSubject('');

  constructor() { }

  setTitle(title: string) {
    this.title.next(title);
  }
}

表头.组件. ts

import { Component, OnInit } from '@angular/core';
import { HeaderTitleService } from '../../../services/headerTitle.service'

@Component({
  selector: 'app-header',
  templateUrl: './header.component.html',
  styleUrls: ['./header.component.scss'],
  providers: [HeaderTitleService]
})
export class HeaderComponent implements OnInit {
  title: string;

  constructor(
    private headerTitleService: HeaderTitleService
  ) { }

  ngOnInit() {
    this.headerTitleService.title.subscribe(updatedTitle => {
      this.title = updatedTitle;
    });
  }

}

header.component.html

<h1>{{title}}</h1>

home.component.ts

import { Component, OnInit } from '@angular/core';
import { HeaderTitleService } from '../../services/headerTitle.service';

@Component({
  selector: 'app-home',
  templateUrl: './home.component.html',
  styleUrls: ['./home.component.scss'],
  providers: [HeaderTitleService]
})
export class HomeComponent implements OnInit {

  constructor(
    private headerTitleService: HeaderTitleService
  ) { }

  ngOnInit() {
    this.headerTitleService.setTitle('hello');
  }

}

共有2个答案

申屠锦
2023-03-14

将HeaderTitleService移到模块的提供程序中。通过您的实现,您将在每个组件中收到HeaderTitleService的新实例。

希望这有所帮助。

穆英飙
2023-03-14

每个组件中的行< code > providers:[header title service]意味着每个提供者都将获得一个< code>HeaderTitleService,而不是在它们之间提供一个。

@NgModule({
  providers: [HeaderTitleService]
})
 类似资料:
  • 设置容器要使用的卷数组。可以使用卷在服务或作业中的其他步骤之间共享数据。可以在主机上指定命名Docker卷、匿名Docker卷或绑定挂载。 工作流程 第一个作业(build)有一个build目录,但当第二个作业(deploy)运行时,它没有,只包含源代码。 这个项目是一个mono repo,我试图部署的代码位于路径,因此所有标志。

  • 问题内容: 有没有办法在AngularJS中的服务之间共享数据? 用例:来自不同服务的数据聚合 例如,我想要一个service1从REST服务加载一些数据。然后,另一个service2将来自另一个REST API的其他数据添加到service1数据中,以创建数据聚合服务。 我基本上是想根据它们使用的API来分离服务,但是仍然有一个服务来最终保存所有数据。 问题答案: 创建使用延迟库的第三项服务,以

  • 我正在使用angular2开发一个应用程序。我有一个场景,需要在路由时(使用router.navigate())将复杂的数据(对象数组)从一个组件传递到另一个组件(它们不是父子关系,而是两个独立的组件)。我在谷歌上搜索过,大多数结果描述了父子组件的场景。我浏览了结果,找到了这些传递数据的方法。 1)创建共享服务2)通过路由参数 第二种方法适合我(尽管我不喜欢上面解释的复杂数据)。我无法使用共享服务

  • 问题内容: 我想知道这个著名报价的最真实的解释是什么: 不要通过共享内存进行交流;通过通信共享内存。(R.派克) 在Go Memory Model中,我可以阅读以下内容: 通道上的发送发生在该通道上的相应接收完成之前。(Golang规格) 还有一篇专门的golang文章解释了报价。而关键的贡献是一个工作例子也由Andrew G. 好。有时谈论太多....我是从“内存规范”引用中得出的,也可以通过查

  • 我需要在我的Jhipster应用程序(4.8.2)的多个站点中共享一个组件,我已经将我的组件添加到文件:: 看起来一切都很顺利,但是那个组件内的NgModel指令已经停止工作了。 如果它是value,我不带指令它读起来很好,问题是当我在带有NgModel指令的“input”中使用它时 有人能帮我解决这个问题吗? 谢谢.

  • 我在AWS中使用Terraform部署了一个基础设施。这个基础设施可以部署到不同的环境中,我使用的是工作区。 部署中的大多数组件应该为每个工作区分别创建,但我有几个关键组件希望在它们之间共享,主要是: IAM角色和权限 例如: 第一个资源是一个IAM角色,应该在该Lambda的所有实例中共享,并且不应该重新创建多次。 第二个资源是Lambda函数,其名称取决于当前工作区,因此每个工作区将部署并跟踪