2016-10-19 2 views
2

ng2-page-scrollモジュールを使用するナビゲーションメニューがあります。角2 - サービスを実行する前にブール値がtrueになるのを待つ

ハッシュタグリンクを使用してトラフページをスクロールします。

問題があるのは、私がクロスルートを操作すると、データが読み込まれるまでに時間がかかるため、通常はサービスが自分のセクションにスクロールするため、データ全体が読み込まれるよりも重要です。そのため、ユーザは、間にあるセクションに移動するために全面的にスクロールする必要があります。これにより、メニュー全体が役に立たなくなります。

だから私は、「スクロール」ページにboolsを設定するために、すべてのセクションに持つEventEmitterを使用して、すべての良い...

しかし、私は真オンにするallDataLoadedブールのを待つのか分かりませんよ。

私はこれが私のコードは、これまでどのように見えるかである約束

を使用しようとしました。ルートセグメントルートセグメント

homeLoaded: boolean = false; 
contactLoaded: boolean = false; 
aboutLoaded: boolean = false; 

allDataLoaded: boolean = false; 

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

checkIfDataLoaded() { 
    if (this.homeLoaded && this.contactLoaded && this.aboutLoaded) { 
     //this.allDataLoaded = true; 
     return new Promise((resolve, reject) => { 
      resolve(true); 
     }); 
    } 
} 
012を使用してコンポーネントの

<componentOne (dataLoadedEvent)="homeLoaded = true; checkIfDataLoaded()"></componentOne> 

TSを使用してナビゲーションメニューコンポーネント成分の

<a [routerLink]="['']" [queryParams]="{ scrollTo: '#home' }"> 
<a [routerLink]="['']" [queryParams]="{ scrollTo: '#contact' }"> 
<a [routerLink]="['']" [queryParams]="{ scrollTo: '#about' }"> 

HTMLの

HTMLブール値がfalse/trueをオンにするのを待っているときの約束を使用する適切な方法は何DRを、ギュンター・Zöchbauerとして

は、コードがTypeError: Cannot read property 'then' of undefined

TLで壊れる、別のquestoinはこちら(https://stackoverflow.com/a/40126194/3264998)答え?

答えて

関連する問題