簡體   English   中英

Angular:子組件在將數據傳遞給父組件后監聽返回

[英]Angular: Child component listen for return after passing data to Parent component

我是 Angular 的新手,一直試圖找到我需要但無法找到的東西。 請幫忙。

假設這是具有必需參數的工作函數:

export class ChildComponent implements OnInit {

  ...

  datatable(params, callback) {
    this.service.getList(params).subscribe(response => {
      callback({
        recordsTotal: response.recordsTotal,
        recordsFiltered: response.recordsFiltered,
        data: response.data
      });
    });
  }

  ...

}

以上工作正常。 但是后來我想把這個 ChildComponent 作為共享組件,所以我必須把這個函數分開,放在 ParentComponent 下。 請注意,下面的代碼不正確,但我試圖這樣解釋我的觀點:

子組件:

export class ChildComponent implements OnInit {

  @Output() source: EventEmitter<any> = new EventEmitter<any>();

  datatable(params, callback) {
    this.source.emit(params, callback).subscribe(response => {
      callback({
        recordsTotal: response.recordsTotal,
        recordsFiltered: response.recordsFiltered,
        data: response.data
      });
    });
  }
  
  ...

}

父組件:

@Component({
  selector: 'parent-component',
  template: '
   <child-component (source)="getList($event)"></child-component>
  '
})
export class ParentComponent implements OnInit {
  
  constructor(private service: Service) { }
  
  getList(params) {
    return this.service.getList(params);
  }

}

服務:

export class Service {

  constructor(private http: HttpClient) { }

  getList(data) {
    return this.http.post("http://example.com/list", data)
  }
}

我知道我做錯了。 我需要 ChildComponent 通過 ParentComponent 的函數傳遞參數,然后從那里監聽返回。 我該如何以正確的方式做到這一點? 謝謝你。

我認為您沒有使用您定義的 EventEmitter 但沒有使用

也許

datatable(params, callback) {
  this.service.getList(params).subscribe(response => {
    callback({
      recordsTotal: response.recordsTotal,
      recordsFiltered: response.recordsFiltered,
      data: response.data
    });

    this.source.emit('what ever you want to pass');
  });
}

父組件.ts

@Component({
  selector: 'parent-component',
  template: '
   <child-component (source)="getList($event)"></child-component>
  '
})
export class ParentComponent implements OnInit {
  
  constructor(private service: Service) { }
  
  getList(params) {
    return this.service.getList(params).subscribe();
  }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM