Javascript 如何将一个同级组件的功能共享给另一个同级组件

Javascript 如何将一个同级组件的功能共享给另一个同级组件,javascript,angular,typescript,components,Javascript,Angular,Typescript,Components,在这里,我知道如何从json获取数据,但在基于引用另一个json的id从json检索数据时,我发现很困难。问题陈述在这里,我有一个api/users的json,其中包含10个用户,每个用户有10个博客还有一个api/posts的api,其中包含所有帖子。现在,我必须检索以下数据:当我点击user1时,必须显示与userid 1相关的博客 这是服务台 getUsers(): Observable<UserModel[]> { return this.http.get<UserMo

在这里,我知道如何从json获取数据,但在基于引用另一个json的id从json检索数据时,我发现很困难。问题陈述在这里,我有一个api/users的json,其中包含10个用户,每个用户有10个博客还有一个api/posts的api,其中包含所有帖子。现在,我必须检索以下数据:当我点击user1时,必须显示与userid 1相关的博客

这是服务台

getUsers(): Observable<UserModel[]> {
return this.http.get<UserModel[]>(`${this._url}/users`)}

getUserBlogPosts(userId:number){
return this.http.get<BlogsModel[]>(`${this._url}/posts?userId=${userId}`)}
.blog.ts

 ngOnInit() {
this.getBlogsList();  }

 getBlogsList() {
let id  = this.blog
this.service.getUserBlogPosts(id.userId).subscribe(
  data=>{
    console.log(data)
    this.blogs=data;
  }
)}
}


当我在控制台中单击onclick(users)时,我能够在用户组件中过滤这里的数据,我想让这个输出显示在blogs组件中如何做到这一点&在点击获取user1的blog后出现问题,它正在重定向到url/posts?userId=1,当我尝试编辑url/posts?userId=2时,它没有显示任何数据。如何解决此问题在您的情况下,您可以重用您的服务并从behaviorSubject发出数据

服务台

constructor() {
   this._currentUser = new BehaviorSubject(null);
   this.currentUser$ = this._currentUser.asObservable();
}

setCurrentUser(user) {
   this._currentUser.next(user);
}
user.ts

 ngOnInit() {
this.getUsersOnSubscribe()  }
getUsersOnSubscribe(){
this.service.getUsers().subscribe(
  data =>{
    console.log(data);
    this.users = data;
  } 
)}
 onClickUser(users){  
this.currentUser = users
let id = users.id
console.log(id)        
this.service.getUserBlogPosts(id).subscribe(
  data=>{
    console.log(data)
    this.currentUser = data
  })  }
this.service.getUserBlogPosts(id).subscribe(
  data=>{
    this.currentUser = data
    // Emits your value
    this.service.setCurrentUser(this.currentUser)
  } 
)
blog.ts

this.service.currentUser.subscribe(
    user => {
       //The data you emitted from user.ts is available here, do your logic
    }
)

在您的情况下,您可以重用您的服务并从behaviorSubject发出数据

服务台

constructor() {
   this._currentUser = new BehaviorSubject(null);
   this.currentUser$ = this._currentUser.asObservable();
}

setCurrentUser(user) {
   this._currentUser.next(user);
}
user.ts

 ngOnInit() {
this.getUsersOnSubscribe()  }
getUsersOnSubscribe(){
this.service.getUsers().subscribe(
  data =>{
    console.log(data);
    this.users = data;
  } 
)}
 onClickUser(users){  
this.currentUser = users
let id = users.id
console.log(id)        
this.service.getUserBlogPosts(id).subscribe(
  data=>{
    console.log(data)
    this.currentUser = data
  })  }
this.service.getUserBlogPosts(id).subscribe(
  data=>{
    this.currentUser = data
    // Emits your value
    this.service.setCurrentUser(this.currentUser)
  } 
)
blog.ts

this.service.currentUser.subscribe(
    user => {
       //The data you emitted from user.ts is available here, do your logic
    }
)

在点击获取user1的博客后,也出现了问题,它重定向到url/posts?userId=1,当我尝试编辑url到url/posts?userId=2时,它没有显示任何数据。如何解决此问题请创建一个新问题,描述您的问题在点击获取user1的博客后也有问题,它正在重定向到url/posts?userId=1,当我尝试编辑url到url/posts?userId=2时,它没有显示任何数据。如何解决此问题请创建一个新问题来描述您的问题