我有以下代码,其中console.log('data')永远不会被命中。我认为它与主题有关。有人可以帮忙吗?
getTextResourceSubject(key: string): Observable<string> {
const subject = new Subject<string>();
// Do something here
return subject;
}
initialise(title: string, message: string, yes: string, no: string) {
var titleTranslated: string;
var messageTranslated: string;
var yesTranslated: string;
var noTranslated: string;
console.log('initialising');
Observable.forkJoin(
this.getTextResourceSubject(title),
this.getTextResourceSubject(message),
this.getTextResourceSubject(yes),
this.getTextResourceSubject(no)
).subscribe(
(data) => {
console.log('data');
titleTranslated = data[0];
messageTranslated = data[1];
yesTranslated = data[2];
noTranslated = data[3];
console.log(data);
},
err => console.log(err)
);
}
答案 0 :(得分:0)
它肯定与Subject
有关。您需要将数据传递到主题中,否则它不会发出任何值,也不会收到数据。您需要做的是发布值
mySubject.next(value);
你的意图不太明确,但我假设你想要另一种类型的主题,可以是BehaviorSubject或ReplaySubject。
这应解决问题
getTextResourceSubject(key: string): Observable<string> {
const subject = new BehaviorSubject<string>(key);
// Do something here
return subject;
}
这将创建一个填充了key
值的主题。
实际上,我认为在您的案例中没有使用主题的任何意义。您也可以尝试使用
getTextResourceSubject(key: string): Observable<string> {
const obs = Observable.of(key);
// Do something here
return obs;
}