Tìm kiếm trang web

angular - Truyền dữ liệu scope vào ng-content trong Angular2


Tôi đang tìm giải pháp để truyền dữ liệu phạm vi của thành phần hiện tại vào chỉ thị ng-content.

Tôi có mẫu thành phần app-table với dữ liệu mà tôi muốn truyền vào nội dung con, sử dụng một số giải pháp như sau:

<!-- some html before -->
<table>
    <!-- complex header markup with sorting/filtering support -->

    <tr *ngFor="let item of data">
         <ng-content [value]="item"></ng-content> //how to pass data?
    </tr>
</table>
//some html after

Và mẫu trang nơi tôi muốn sử dụng dữ liệu này:

<app-table>
     <td>{{value.Name}}</td>
     ...
</app-table>

Điều này có khả thi không?

Câu trả lời #1

Tôi đã gặp phải vấn đề tương tự, để làm rõ hơn, tôi đã thêm ví dụ của bạn đang hoạt động.

<!-- some html before -->
<table>
    <!-- complex header markup with sorting/filtering support -->

    <tr *ngFor="let item of data">
      <ng-template [ngTemplateOutlet]="templateRef" [ngTemplateOutletContext]="{$implicit: item}"></ng-template>
    </tr>
</table>
//some html after

Trong Component, bạn cần khai báo templateRef như sau.

export class AppTableComponent {
  ...
  @ContentChild(TemplateRef) templateRef: TemplateRef<any>;

  ...
}

Sau đó sử dụng thành phần của bạn như thế này.

<app-table>
 <ng-template let-item>
     <td>{{item.Name}}</td>
     ...
 </ng-template>
</app-table>

Câu trả lời #2

Tôi nghĩ bạn có thể tìm thấy câu trả lời của mình ở đây: Angular 2 truyền HTML vào ng-content với các binding.

Thành phần ng-content được tài liệu kém, thật không may. Nó sẽ sớm được cải thiện, theo như vấn đề trên GitHub của Angular (https://github.com/angular/angular.io/issues/3099).

Bài viết liên quan