2017-01-30 4 views
0

Ich habe den folgenden Code, wo die console.log ('Daten') nie getroffen wird. Ich denke, es hat etwas mit dem Thema zu tun. Kann jemand helfen?Angular2 mehrere Observables und forkJoin funktioniert nicht

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) 
 
     ); 
 
     } 
 
     

Antwort

0

Es hat auf jeden Fall etwas mit dem Subject zu tun. Sie müssen die Daten in das Subjekt eingeben, andernfalls gibt es keinen Wert aus und die Daten werden nicht empfangen. Was Sie tun müssen, um den Wert zu veröffentlichen ist

mySubject.next(value); 

Ihre Absicht nicht ganz klar, aber ich nehme an, Sie eine andere Art von Thema wollen die BehaviorSubject oder ReplaySubject sein kann.

Dies sollte das Problem beheben

getTextResourceSubject(key: string): Observable<string> {   
    const subject = new BehaviorSubject<string>(key); 
    // Do something here 
    return subject; 
} 

Dies wird ein Thema erstellen, die mit Ihrem key Wert gefüllt wird.

Eigentlich sehe ich keinen Punkt der Verwendung von Themen in Ihrem Fall. Sie könnten auch versuchen, mit

getTextResourceSubject(key: string): Observable<string> {   
    const obs = Observable.of(key); 
    // Do something here 
    return obs; 
} 
gehen
Verwandte Themen