angular - 将组件值传递给标题
问题描述
我正在尝试在所有页面上显示的“标题”组件中显示我的项目的“数字”。
页眉组件:
<div class="d-flex flex-column flex-md-row align-items-center px-md-4 bg-brown text-white ">
<h2 class="my-0 mr-md-auto">
<span>Project {{numero}}</span></h2>
<nav class="my-2 my-md-0 mr-md-3">
<a class="p-2 text-white" href="#">Projects</a>
<a class="p-2 text-white" href="#">Exit</a>
</nav>
</div>
其他组件(.html):
<app-header></app-header>
<div>my component</div>
(.ts)
numero: string = "MY NUMERO";
如何从其他组件中填写标题的“编号”?我们应该使用@Input() 吗?
非常感谢您
解决方案
我建议使用Service
- 声明服务
export class NumeroService {
numeroSubject$ = new BehaviorSubject("MY NUMERO")
numero$: Observable<string> = this.numeroSubject$.asObservable();
updateNumero(newNumero: string) {
this.numeroSubject$.next(newNumero)
}
}
我们创建一个BehaviorSubject
并传递一个值“MY NUMERO”。这将创建一个Observable
值为“MY NUMERO”的值。要更新这个值,我们只需将新值传递next()
给Subject
- 然后我们将这个服务注入到
HeaderComponent
TS
constructor (private numeroService: NumeroService) {}
numero$ = this.numeroService.numero$
HTML
<span>Project {{ numero$ | async }}</span></h2>
我们正在使用async
管道订阅Observable
- 最后,我们将服务注入到我们希望更新的地方
numero$
constructor (private numeroService: NumeroService) {}
ngOnInit() {
this.numeroService.updateNumero("NEW NUMERO")
}
推荐阅读
- mysql - 为 mysql db 中存在的特定列生成 n-gram
- windows - 如何删除所有文件和目录
- javascript - 用 promise 的解析数据改变变量的值
- excel - 来自 2 个不同工作表的 vba
- mysql - 在并行模式下使用同一事务运行多个查询是一种不好的做法吗?
- sql - 我如何获得每个产品的退款总数?
- python - 对列表中每个元素的第一个变量求和
- apache-kafka - 如何监控交易消费者的 kafka 消费者滞后
- python - Firebird x32-x64 位
- c# - 断开连接场景中的 EF6 DbUpdateConcurrencyExcpetion