如何将数据传递到 ng-bootstrap 弹出窗口

问题描述 投票:0回答:2

我正在使用 ng-bootstrap 编写一个带有 Bootstrap 的 Angular 应用程序。我有一个封装在这样的组件中的弹出窗口:

HTML(弹出框组件)

<div>
  <div>Data 1: <i>{{ v.data1 }}</i></div>
  <div>Data 2: <i>{{ v.data2 }}</i></div>
</div>

此弹出窗口在另一个组件中打开:

HTML

<div *ngFor="let v of vector">
    <span [ngbPopover]="popOver" popoverTitle="Pop title">Open</span>
</div>

<ng-template #popOver>
    <popover></popover>
</ng-template>

我需要将 ngFor 的 v 参数传递给弹出窗口。我怎样才能实现这个目标?

angular twitter-bootstrap-4 ng-bootstrap
2个回答
9
投票

这是 Angular 的基本技术如何将数据传递给组件

所以你需要更新你的弹出框组件:

popover.component.html

<div>
  <div>Data 1: <i>{{ data.data1 }}</i></div>
  <div>Data 2: <i>{{ data.data2 }}</i></div>
</div>

popover.component.ts

@Component({
  selector: 'popover',
  templateUrl: './popover.component.html'
})
export class PopoverComponent {
  @Input() data: any;
}

然后更新你的 ngFor:

<div *ngFor="let v of vector">
  <span [ngbPopover]="popOver" popoverTitle="Pop title">Open</span>
  <ng-template #popOver>
    <popover [data]="v"></popover>
  </ng-template>
</div>

这是一个示例https://stackblitz.com/edit/angular-laqjog


0
投票

对于其他偶然发现这个问题的人(YMMV)。 另一种轻量级方法是在线提供数据,而不是依赖单独的组件。

<div
  ngbPopover= "Start date: {{task.start}}"
  popoverTitle="Popover"
  container="body">
</div>

如果您的模板不太重,这可能会起作用。

© www.soinside.com 2019 - 2024. All rights reserved.