我处于角度4,与兄弟姐妹一起工作,没有父母或孩子,只是兄弟姐妹。
一位兄弟正在获取数据,尤其是来自网址的ID
public getId () {
const id = +this.route.snapshot.paramMap.get('id');
// console.log (id); //working!
return id
}
另一个试图做同样的事情来拯救我们所有这一切......但即使他在同一条路线上,他也没有得到我。我不知道为什么。
所以,现在我想将兄弟姐妹的ID发送给兄弟姐妹2。经过一些研究,我找到了很多关于孩子和父母的例子,但在我的情况下他们是兄弟姐妹,所以看起来通过服务传递数据是最好的选择,我遵循这个tutorial。
但有些事情不能正常,我的问题在哪里?
第一部分:这是负责从网址获取ID的人
urlId: number;
public getId () {
const id = +this.route.snapshot.paramMap.get('id');
// console.log (id); //working!
return id
}
ngOnInit(): void {
const id = +this.getId ();
this.taskService.newId(id)
}
服务:这个用函数newID()
更新noId
private noId = new BehaviorSubject<number>(0);
defaultId = this.noId.asObservable();
newId(urlId: number) {
this.noId.next(urlId);
console.log (urlId); // this still working
}
第二部分:这个,在运行onInit()
函数后,应该获取数据,但什么也没发生。
urlId: number;
ngOnInit() {
this.taskService.defaultId.subscribe(urlId => this.urlId = urlId)
console.log (this.urlId); //return 0, or the same value as private noId
}
因此,在组件2中,我没有获得刷新的数据。 出了什么问题?
答案 0 :(得分:1)
只需创建一个服务主题。
public idSub$ = new Subject<number>();
在您的兄弟组件中,您只需粘贴此代码即可获取ID。
this.taskService.idSub$.next(id);
在你想要id的兄弟组件中使用以下代码:
this.taskService.subscribe(id => {
console.log(id);
});