angular - Angular指令如何设置上下文变量泛型类型?
问题描述
我在这个问题上面临同样的问题,由于那里没有答案,我会试着问。
我创建了一个指令ngStream
,它将订阅一个可观察的,并且在组件被销毁后自动取消订阅,我知道async
管道存在,但它需要一个类似的数组:Observable<T[]>
,所以我决定创建这个指令,允许订阅一个正常的Observable<T>
和我不需要发出单个元素的数组,这就是我所拥有的,它正在工作:
export class NgStreamDirective implements OnDestroy {
@Input('ngStreamOf') set values(obs: Observable<any>) {
this.subscription = obs.subscribe((o) => {
this.value = o;
if (this.embeddedRef === undefined) {
this.embeddedRef = this._viewContainer.createEmbeddedView(this._template, { "\$implicit": this.value });
} else {
this.embeddedRef.context.$implicit = this.value;
this.embeddedRef.detectChanges();
}
});
}
private subscription: Subscription;
private value: any;
private embeddedRef: EmbeddedViewRef<any>;
constructor(
private _template: TemplateRef<any>,
private _viewContainer: ViewContainerRef
) {}
ngOnDestroy(): void {
this.subscription.unsubscribe();
}
}
我计划改进这段代码,但现在我只需要让它以正确的方式工作,它正在工作,唯一的问题是我无法为我的 定义泛型类型value
,例如:
*ngFor="let i of [0, 1, 2...]"
在这种情况下,变量i
将是一个number
类型,如果我更改列表的类型,变量也会更改它的类型,正如您可能知道的那样。
就我而言:
observable$: Observable<String>
*ngStream="let stream of observable$"
变量流是一种any
类型,我想不出设置返回类型的方法,我也看到了这个问题,似乎有同样的问题,没有解决方案。
解决方案
推荐阅读
- jquery - 在 Chrome 和 IE 之间导出到 excel 时的不同日期时间值
- elasticsearch - 无法设置索引墓碑大小配置,因为它在 elasticsearch 5.4.0 中无法识别
- python - 在 Python 中的 Mayavi 中重现下图的相机角度
- javascript - .then 没有定义?
- android - 在运行时更改图像按钮
- java - 在 TextView 中格式化 Double 类
- vb.net - 引用非共享成员线程
- javascript - 计算数组中每个值的出现次数
- freemarker - Crafter CMS:从不同的页面/内容类型检索数据
- typescript - socket.io-redis 打字稿错误