1

我正在尝试将数据从父组件发送到子组件,但是我的 ng2-smart-table 出现问题,该问题正在发送。在我的父组件中,我使用了 ng2-smart-table,它使用 userRowSelect(一个标准函数),当我在表中选择一行时,我会从该行获取所有数据。我想传递给我的子组件的那一行的数据。我尝试使用共享服务,输入和发射,到目前为止它们都没有工作。下面是这两个组件的代码片段。关于做什么的任何建议?

父 html:

<ng2-smart-table [settings]="settings" [source]="data" (userRowSelect)="onRowSelect($event)"></ng2-smart-table>

父组件:

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

  ngOnInit() {
      this.reportService.getReportsTemplates().subscribe(response => this.data = response);
  }

  onRowSelect(event): void {
      this.passDataToViewPdf.next(event);
      this.router.navigate(['/report-view-pdf', localStorage.getItem('siteId')]);
  }

子组件:

    @Input() template;

    public handleEvent(event) {
            // get data from passDataToViewPdf emitter
        }
    ngOnInit() { this.template = // get data from handleEvent}
4

1 回答 1

2

那是因为 AngularsEventEmitteremit发出值的方法。看文档

它应该是

this.passDataToViewPdf.emit(event);

但是,查看您的代码EventEmitter是在父组件中定义的,因此您的父组件正在向其父组件而不是子组件发出值。

它应该看起来像这样。

子组件

@Input() template;
@Input() set pdf(newPdf) {
   this._pdf = newPdf;
   this.handleEvent(newPdf);
};
private _pdf;



public handleEvent(event) {
    // process your data
}
ngOnInit() { this.template = // get data from handleEvent}

父 html 模板

<child-component [pdf]="pdfValueInParent"></child-component>

父组件 ts

onRowSelect(event): void {
      this.pdfValueInParent = event;
      this.router.navigate(['/report-view-pdf', localStorage.getItem('siteId')]);
  }
于 2017-11-20T10:58:06.010 回答