【发布时间】:2019-03-04 09:55:25
【问题描述】:
HTML 模板上显示的数据是 Key 表单数据。意思是,它需要翻译。 为此,我想从我的模板中调用一个异步函数。试过了,没有成功:
模板:
<span class="myClass-rowValue">{{translateServingStyle(size.defaultServingStyle?.surcharge) | async}}</span>
组件 ts 文件:
servingStylesData$: Observable<ServingStyles_servingStyles[]>;
ngOnInit(): void {
this.servingStylesData$ = of(this._apollo
.watchQuery<ServingStyles>({
query: ServingStylesQuery
}))
.pipe(
filter((query) => !!query),
switchMap((query) => query.valueChanges),
take(1),
takeUntil(this._ngOnDestroy),
map((response) => response.data.servingStyles)
);
}
translateServingStyle(servingStyleValue: string): Observable<string> {
return this.servingStylesData$
.pipe(
map((servingStyles) => servingStyles
.filter((servingStyle) => servingStyle.value === servingStyleValue)
.map((selectedServingStyle) => selectedServingStyle.value)[0]
)
);
}
这样做的正确原因是什么?
#编辑
这使我的浏览器崩溃。 进入无限循环调用 translateServingStyle()
我尝试删除我的功能代码,然后返回
of("some string")
而且效果很好。
但是当引用一个管道到一个局部变量时,这个循环就会发生。谁能解释一下为什么?
【问题讨论】:
-
您面临的具体问题是什么?
-
举个例子。比如你试图显示的整个对象,并提到显示的是什么键而不是你想要显示的?。
-
我的浏览器卡住了。它进入一个无限循环调用这个函数......我试过只返回一个可观察的(使用(“some”字符串“))并且它工作正常。当传递一个保存为局部变量的可观察时,会发生这个循环。
-
显示 servingStylesData 函数
-
@SachilaRarawaka 编辑了我的问题,并添加了 servingStylesData
标签: javascript angular typescript rxjs