2017-01-30 6 views
0

У меня есть следующий код, в котором console.log ('data') никогда не попадает. Я думаю, что это имеет какое-то отношение к Субъекту. Может кто-нибудь помочь?Angular2 multiple Observables и forkJoin не работает

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

Это определенно что-то делать с 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; 
} 
Смежные вопросы