angular - 如何将数据传递给 ng-bootstrap popover

我正在使用 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 的基本技术 how to pass data to component .

所以你需要更新你的 popover 组件:

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

https://stackoverflow.com/questions/49149662/

相关文章:

vuejs2 - 在 vue.js 中捕获 API 请求中的错误

php - 创建一个函数来注销 WordPress 用户?

git - 使用通配符过滤 git 分支

spring - Feign Client - 动态授权 header

css - Flex 布局 - "flex-basis: 1e-09px"是什么意思?

reactjs - 从 REST API 加载的 react native 图像 URL 未显示

mongodb - 使用 Mongoose 和 SRV 连接字符串将数据插入 MongoDB Atl

scala - 扁平化 future 内部 yield

firebase - Cloud Functions for Firebase 是否遵守实时数据库规

r - 根据最近的日期合并数据 R