2016-10-19 6 views
0

Ich habe den folgenden Code für eine Komponente, die die Root-Segmentroute verwendet.TypeError: Kann die Eigenschaft 'then' von undefined auf Angular 2 Promises nicht lesen

ngOnInit() { 
    ... 

    this.route.queryParams.forEach((params: Params) => { 
     if (params['scrollTo']) { 
      this.checkIfDataLoaded().then(() => { 
       this.scrollToSection(params['scrollTo']); 
      }) 
     } 
    }); 
} 

checkIfDataLoaded() { 
    if (this.firstLoaded && this.secondLoaded && this.thirdnLoaded) { 
     return new Promise((resolve, reject) => { 
      resolve(true); 
     }); 
    } 
} 

Es funktioniert gut, bis ich Trog Strecken wechseln und zu meinem Root-Segment zurück, bemerkte ich mit dem Debugger, dass ich diesen Fehler

TypeError: Cannot read property 'then' of undefined 
    at eval (http://localhost:54396/app/my.component.js:58:42) 
    at SafeSubscriber.eval [as _next] (http://localhost:54396/node_modules/rxjs/Observable.js:108:21) 
    at SafeSubscriber.__tryOrSetError (http://localhost:54396/node_modules/rxjs/Subscriber.js:232:16) 
    at SafeSubscriber.next (http://localhost:54396/node_modules/rxjs/Subscriber.js:174:27) 
    at Subscriber._next (http://localhost:54396/node_modules/rxjs/Subscriber.js:125:26) 
    at Subscriber.next (http://localhost:54396/node_modules/rxjs/Subscriber.js:89:18) 
    at BehaviorSubject._subscribe (http://localhost:54396/node_modules/rxjs/BehaviorSubject.js:28:24) 
    at BehaviorSubject.Observable.subscribe (http://localhost:54396/node_modules/rxjs/Observable.js:56:27) 
    at eval (http://localhost:54396/node_modules/rxjs/Observable.js:87:38) 
    at new ZoneAwarePromise (http://localhost:54396/node_modules/zone.js/dist/zone.js:467:29) 

Jede Idee, was passiert ist und wie diese lösen ?

Antwort

2

Wenn checkIfDataLoaded kein Versprechen Rückkehr dieser Fehler auftritt:

checkIfDataLoaded() { 
    if (this.firstLoaded && this.secondLoaded && this.thirdnLoaded) { 
     return new Promise((resolve, reject) => { 
      resolve(true); 
     }); 
    } 
    /// <<<=== here nothing is returned 
} 
+0

gut, da geht mein Versprechen Logik, vielen Dank für die Klärung –

Verwandte Themen