【发布时间】:2021-03-18 10:45:32
【问题描述】:
我正在尝试创建全局组件,以便其他开发人员可以将此组件用于他们的项目。
这里的目标是,我有一个名为 app.component.ts 的本地组件,它有一个子组件。我已经捆绑了全局组件并保存在 node_modules 文件夹中。
app.component.html
<p-table #dt [value]='genes' [columns]="tableHeader" dataKey="geneName">
<ng-template pTemplate="header">
<th></th>
<th>Gene</th>
<th>Position</th>
<th>Value</th>
</ng-template>
<ng-template pTemplate="body" let-columns="columns" let-expanded="expanded" let-gene>
<tr [pSelectableRow]="gene">
...
</tr>
</ng-template>
<ng-template pTemplate="rowexpansion" let-rowData let-columns="columns">
<tr>
<gene-child [geneData]="rowData" (geneSelection)="selection()"> </gene-child>
</tr>
</ng-template>
</p-table>
child.component.ts
import { ConfirmationService } from 'primeng/api';
import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
@Component({
selector: 'gene-child',
templateUrl: './gene.html',
})
export class GeneChildComponent implements OnInit {
@Input() geneName: any;
@Output() geneSelection = new EventEmitter();
以上代码运行良好,没有任何问题。
现在我正在创建全局组件来处理 priemng 表,我只需要从父组件传递标题和数据。
更新代码
app.component.html
<bio-tables [tableData]="genes" [header]="tableHeader"></bio-tables>
上面的代码也可以正常工作。
但是这里我的问题是我需要将“选择器”gene-child 传递给全局组件所以我做了以下操作,但它给出了错误,
<bio-tables [tableData]="genes" [header]="tableHeader" [rowExpansionSelector]="gene-child"></bio-tables>
我尝试将基因子组件存储到一个变量中并尝试传递它,如下面的代码
app.component.ts
import { GeneChildComponent } from './gene-child.component.ts';
...
export class ....{
geneChlid = GeneChildComponent;
app.component.html
<bio-tables [tableData]="genes" [header]="tableHeader" [rowExpansionSelector]="geneChild"></bio-tables>
上面的代码也不起作用。我不确定如何将选择器传递给子组件。
【问题讨论】:
-
为什么需要传递“选择器”作为输入?你想用它实现什么?你想让行扩展动态吗?
-
是的..我想做动态行扩展。