我正处于角度4,与兄弟姐妹一起工作,没有父母或孩子,只是兄弟姐妹。
一个兄弟正在获取数据,尤其是URL中的id
public getId () {
const id = +this.route.snapshot.paramMap.get('id');
// console.log (id); //working!
return id
}
另一个人试图做同样的事情来拯救我们所有这一切......但即使他在同一条路线上,他也没有得到身份证。我不知道为什么。
所以,现在我想将兄弟姐妹的ID发送给兄弟姐妹。经过一些研究,我找到了很多关于孩子和父母的例子,但在我的情况下他们是兄弟姐妹,所以看起来通过服务传递数据是最好的选择,我跟着这个tutorial。
但是有些东西不能正常工作,我的问题在哪里?
第一部分:这是负责从URL获取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中,我没有获得刷新的数据。怎么了?
只需创建一个服务主题。
public idSub$ = new Subject<number>();
在您获取ID的兄弟组件中,只需粘贴此代码即可。
this.taskService.idSub$.next(id);
在您想要id的兄弟组件中使用以下代码:
this.taskService.subscribe(id => {
console.log(id);
});