我有一项服务,让我打开一个小吃吧:
this.snackBarService.open(title, body);
title
和body
是字符串。
我遇到的问题是,它们都需要从键进行翻译,翻译服务返回一个可观察的:
/**
* Returns an observable for a translation based on the key
*
* @param key the translation key
*/
private getTranslation(key: string): Observable<string> {
return this.translocoService.selectTranslate(key, {}, 'auth');
}
这个问题让我想到,在调用open方法之前,我可以使用mergeMap
和combinelateest
,如下所示:
this.getTranslation('snackbars.username.success.title').pipe(
mergeMap(title => {
return combineLatest(
of(title),
this.getTranslation('snackbars.username.success.body')
);
}),
map(([title, body]) => {
console.log('here', title, body);
this.snackBarService.open(title, body);
})
);
但是什么都没发生...控制台不记录任何东西:(
要订阅和取消订阅getTranslation的两个调用会有点乏味。。。那么,有没有简单的方法从可观测数据中获取值并将其传递到snackbar?
我相信,只有使用forkJoin
,您才能做得足够多。试试下面的方法
forkJoin([
this.getTranslation('snackbars.username.success.title'),
this.getTranslation('snackbars.username.success.body')
]).subscribe(
response => {
console.log('here', response[0], response[1]);
this.snackBarService.open(response[0], response[1]);
}
);
forkJoin
仅当两个可观测项都完成时才发出。如果没有,则可以使用combinelatetest
和管道,在take(1)
中仅使用从可观察对象发出的第一个值并完成。
combineLatest([
this.getTranslation('snackbars.username.success.title'),
this.getTranslation('snackbars.username.success.body')
]).pipe(
take(1)
).subscribe(
response => {
console.log('here', response[0], response[1]);
this.snackBarService.open(response[0], response[1]);
}
);
在一个服务中,我有两个API调用,每个调用都返回一个可观察的,在我的组件中,我有一些条件,如果为true,我必须调用这两个函数,但我需要等待get()调用,这样我就可以使用get调用返回的参数执行post函数。如果为false,我只想用已经定义的参数调用post函数。 服务: 组成部分: 我不想重复帖子调用的代码,或者如果不可能的话,只是不要在另一个订阅()中使用订阅()。我怎么能这么做?没有异步
所以,我试图用discord js和sqlite3做一件事,但在过去的几个小时里,我一直在讨论这个问题,我仍然不知道如何解决它。 因此,我试图获取仅在中可用的数据,但我不知道如何将其传递出去,以便返回预期值。我已经尝试过使用全局变量,把它放在更大的范围内,但我仍然不知道如何做到这一点。 对不起,如果我弄糊涂了,我不习惯一直问问题。 编辑:应该说我正在使用NPMSqlite3模块。https://w
我有一个组件订阅服务中的一个可观察对象。该方法反过来订阅另一个服务中的可观察对象。我想将一个数组从最后一个服务传递回第一个服务,然后第一个服务将该数组传递回组件。更具体地说,该组件调用其本地服务,然后调用一个数据服务,该数据服务通过http客户端访问我的数据库。http客户端正在工作,数据服务将数组返回给本地服务。本地服务接收数组,但我不知道如何将该数组作为可观察对象传递回组件。以下是简短的代码块
使用RxJS如何在观察者上传递新属性?所以基本上我希望道具“customProp”可以被观察到 添加更多的信息-所以基本上,我试图创建一个冷可观察的,其中制片人需要一个道具,应该来自订户 添加用法信息--coldObservable是DB连接函数,customProp是需要在DB上执行的查询
当控制器对DataModel中的String statusText进行更改时,我调用setChanged()¬ifyObservers(This.statusText),然后在Display类中调用update(Observable o,Object arg)。 我的问题是,当我有多个字符串用于不同的标签时,我应该如何继续?我的第一个想法是将所有字符串放入一个列表中,然后更新方法看起来如下所
我是selenium初学者,只是想把webDriver传递给另一个类,但没有成功。程序应该打开浏览器(“Google”)并在主类中键入一些单词,在第二个类中应该按下“Google”按钮。 以下是我的主要课程: 这是我想从主驱动程序中使用的类。 当我运行它时,它对我说: 传递:main失败:printOnScreen java.lang.NullPointerException 我做错了什么?谢谢高