Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从一个组件到另一个组件的数据输出。角度5_Javascript_Angular - Fatal编程技术网

Javascript 从一个组件到另一个组件的数据输出。角度5

Javascript 从一个组件到另一个组件的数据输出。角度5,javascript,angular,Javascript,Angular,我需要帮助。我有一个父组件。里面有五个孩子。这是一页卡片。每个卡都是一个组件。在一张卡中,我将csv文件上传到服务器,服务器立即向我提供json,我需要在其他卡中显示json(以表格、图形的形式),而无需额外的get请求。事实上,点击发送按钮,文件就消失了,然后它出现在所有组件中。通过服务获取并发布我的请求。我不明白如何通过服务将数据传输到所有组件。先谢谢你 我有简单的http.service.ts constructor(private http: HttpClient) { } ge

我需要帮助。我有一个父组件。里面有五个孩子。这是一页卡片。每个卡都是一个组件。在一张卡中,我将csv文件上传到服务器,服务器立即向我提供json,我需要在其他卡中显示json(以表格、图形的形式),而无需额外的get请求。事实上,点击发送按钮,文件就消失了,然后它出现在所有组件中。通过服务获取并发布我的请求。我不明白如何通过服务将数据传输到所有组件。先谢谢你

我有简单的http.service.ts

constructor(private http: HttpClient) { }
    getData() {
      return this.http.get('http://localhost:8080');
    }
    postData(data: any) {
      return this.http.post('http://localhost:8080', data, {
        reportProgress: true,
        observe: 'events'
      })
    }
}
和子组件,用于将文件上载到服务器

export class SignalsComponent {
  selectedFile: File = null;
  addFileStatus = false;
  progressBar: any;
  signalsFiles: any;
  constructor(private http: HttpService) {}
  onFileSelected(event) {
    this.selectedFile = <File>event.target.files[0];
    this.addFileStatus = true;
  }
  sendCsvFile() {
    const formData = new FormData();
    formData.append('csv-file', this.selectedFile, this.selectedFile.name);
    this.http.postData(formData)
      .subscribe(event => {
        if(event.type === HttpEventType.UploadProgress) {
          this.progressBar = 'Upload Progress: ' + Math.round(event.loaded / event.total * 100) + '%';
        } else if (event.type === HttpEventType.Response) {
          this.signalsFiles = event.body;
          console.log(this.signalsFiles);
        }
      });
  }
导出类信号组件{
selectedFile:File=null;
addFileStatus=false;
进度条:任何;
信号文件:任何;
构造函数(私有http:HttpService){}
选举(事件){
this.selectedFile=event.target.files[0];
this.addFileStatus=true;
}
sendCsvFile(){
const formData=new formData();
formData.append('csv-file',this.selectedFile,this.selectedFile.name);
this.http.postData(formData)
.订阅(事件=>{
if(event.type==HttpEventType.UploadProgress){
this.progressBar='上载进度:'+Math.round(event.loaded/event.total*100)+'%;
}else if(event.type==HttpEventType.Response){
this.signalsFiles=event.body;
console.log(this.signalsFiles);
}
});
}

您可以做的是在您的服务中创建一个observable。当您发出HTTP请求时,您可以通过observable发送该响应,以便通知所有订户。该服务将如下所示:

从'@angular/core'导入{Injectable};
从“rxjs/Subject”导入{Subject};
从“@angular/common/http”导入{HttpClient};
@可注射()
导出类示例服务{

private _datachange=new Subject

欢迎来到StackOverflow。将您的代码添加到问题中是一个好主意,这样我们就有了一些背景。您已经尝试了什么?我的代码在底部。谢谢您的建议。我现在就要尝试了。我做到了:)非常感谢您的帮助。如果它解决了您的问题,请记住接受这个作为答案。谢谢