gpt4 book ai didi

javascript - 通过服务在组件之间共享信息不起作用

转载 作者:搜寻专家 更新时间:2023-10-30 21:16:30 25 4
gpt4 key购买 nike

我在解决这个问题时遇到了一些麻烦,基本上我有一个 headerTitleService,我希望能够在我的 header 组件中动态设置标题,但出于某种原因我设置的标题没有显示?我没有收到任何错误,所以我似乎可以弄清楚问题是什么..

headerTitle.service.ts

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);
}
}

header.component.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');
}

}

最佳答案

每个组件中的 providers: [HeaderTitleService] 行意味着它们将分别获得一个 HeaderTitleService,而不是它们之间的一个。

要修复此问题,请从您的组件中移除 providers: [HeaderTitleService],并将其放入您的模块定义中:

@NgModule({
providers: [HeaderTitleService]
})

关于javascript - 通过服务在组件之间共享信息不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47705325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com