首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法使用服务在两个组件之间传递数据

无法使用服务在两个组件之间传递数据
EN

Stack Overflow用户
提问于 2022-11-12 12:48:41
回答 1查看 33关注 0票数 0

我希望将数组值从Search组件传递到History组件,以显示已完成搜索的历史记录。

我是用这种方式写代码的-

search-page.component.ts

代码语言:javascript
复制
 export class SearchPageComponent implements OnInit {


    constructor( private dataService :DataService) {   }


  githubSearch(username:any){

   return new Promise((resolve, reject) => {

  this.httpClient.get("----")
  .pipe(map(Response => Response))
  .subscribe((res: any) => {

   
this.searchResultObject = res;
this.allSearchResultArray.push(this.searchResultObject);

   this.dataService.changeParam(this.allSearchResultArray)


    resolve(this.searchResultObject );

});

  });
}

passDataToService(){
  this.dataService.allPassedData.next(this.allSearchResultArray);
}

}

data.service.ts

代码语言:javascript
复制
export class DataService {

  allPassedData: any


  constructor() { }

storePassedObject(passedData:any){
  this.allPassedData.next(passedData);
}

retrievePassedObject(){
  return this.allPassedData;
}


}

history-page.component.ts

代码语言:javascript
复制
export class HistoryPageComponent implements OnInit {


  historyData : any = [];


  constructor(private dataService: DataService) { }

  ngOnInit(): void {

  
this.historyData = this.dataService.retrievePassedObject()



  }

}

我无法通过这个设计的代码检索数据。

EN

回答 1

Stack Overflow用户

发布于 2022-11-12 13:35:59

首先,在服务中创建主题并使其成为可观察的。

data.service.ts

代码语言:javascript
复制
export class DataService {

  private allPassedData = new Subject<any>();
  allPassedData$ = this.allPassedData.asObservable();

  constructor() { }


  setPassedData(retrievedData: any) {
    this.allPassedData.next(retrievedData);
  }
}

现在,将可观测数据设置为

搜索-页面.组件.

代码语言:javascript
复制
 passDataToService() {
        this.dataService.setPassedData(this.allSearchResultArray);
      }

历史记录-页面.组件.

代码语言:javascript
复制
ngOnInit(): void {
    // for retrieval of data in history component
    this.dataService.allPassedData$.subscribe((data) => {
      this.historyData = data
    })

  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74413062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档