繁体   English   中英

Angular Pipe - 访问组件实例

[英]Angular Pipe - access Component instance

在我的TableComponent我维护一个字典来表示选中的行。

private checkedRows: Dictionary<boolean> = {}; // { [id: string]: boolean }

然后我有一个方法,在模板中使用

isRowCheckDisabled(rowId: string): boolean {
   return (
      !this.checkedRows[rowId] && this.getCheckedRowsCount() >= this.selectionOpt.limit
   );
}

getCheckedRowsCount(): number {
   return Object.keys(this.checkedRows).length;
}

模板:

<td 
  ...
  [nzDisabled]="isRowCheckDisabled(row.id)"
  ...
</td>

我想将这个逻辑移到一个(也许?) Pipe
但是,如果不能直接访问组件字段,我将不得不使用类似的签名来实现它

transform(
    rowId: string, 
    checkedRows: Dictionary<boolean>,
    selectionOpt: SelectionOpt | undefined): boolean
) { ... } 

并使用它

[nzDisabled]="row.id | checked: checkedRows:selectionOpt"

这不是真的“好”。

问题是,管道可以访问当前的组件上下文,从而访问它的字段吗?
有一个更好的方法吗? 我应该坚持这个方法吗?

您可以使用:

constructor(cdRef: ChangeDetectorRef) {
    (cdRef as EmbeddedViewRef<Type<any>>).context
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM