[英]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.