2017-12-07 15 views
0

私はAngularテンプレートを持つVisual Studio 2017 .NET Core 2.0プロジェクトを持っています。次の "this.SetUpRefreshInterval()"のいずれかのコメントを外すと、角度のレンダリングがタイムアウトします。 "ClientApp/dist/main-server 'のブート機能が解決または拒否しなかった約束を返したため、" NodeInvocationException:30000ms後にプリレンダリングがタイムアウトしました "というエラーが返されます。何か案は?setInterval()を使用してアングルレンダリングタイムアウトする

は、ここでコンポーネントのコードです:

import { Component, OnInit } from '@angular/core'; 

@Component({ 
selector: 'app-currentdatetime', 
templateUrl: './currentdatetime.component.html', 
styleUrls: ['./currentdatetime.component.css'] 
}) 
export class CurrentDateTimeComponent implements OnInit { 
    private currentDateTime: Date; 

    constructor() { 
     this.refreshDate(); 
     //this.setUpRefreshInterval(); 
    } 

    get currentDateFormatted(): String { 
     return this.currentDateTime.toLocaleDateString(); 
    }; 

    get currentTimeFormatted(): String { 
     return this.currentDateTime.toLocaleTimeString(); 
    }; 

    ngOnInit(): void { 
     //this.setUpRefreshInterval(); 
    } 

    private setUpRefreshInterval(): void { 
     setInterval(() => {   
      this.refreshDate(); 
     }, 1000); 
    } 

    private refreshDate(): void { 
     this.currentDateTime = new Date(); 
    } 
} 

は私もObservable.timerを使用してみましたし、同じ結果だ:回避策として

private setUpRefreshInterval(): void { 
     let timer = Observable.timer(0, 1000); 
     timer.subscribe(t => this.currentDateTime = new Date()); 
    } 

を、私はKrishnanunniの提案を使用して、この変更を行った、その作品:

import { Component, OnInit, Inject } from '@angular/core'; 
import { isPlatformBrowser } from '@angular/common'; 
import { PLATFORM_ID } from '@angular/core'; 

constructor(@Inject(PLATFORM_ID) private platformId: Object) { 
    this.refreshDate(); 
} 

ngOnInit(): void { 
    // setting up the refresh interval caused a timeout in prerendering, so only set up interval if rendering in browser 
    if (isPlatformBrowser(this.platformId)) { 
     this.setUpRefreshInterval();  
    }   
} 
+0

なぜあなたはコンストラクタとngOninitで関数を呼び出していますか?私はsetIntervalの代わりにObseravble.timer(1000)を推奨し、コンポーネントのngDestroyにunsubscribeすると、 –

+0

私はコンストラクタとngOnInitの両方でこの関数を呼び出すつもりはありません。私はちょうど私が試した2つの場所を示したい。両方ともプリレンダーのタイムアウトを引き起こします。私はObservable.timer()アプローチを試みたことを示すために質問を編集しました。 – drewob

+0

isPlatformBrowserでインターバルコードをラップして、プレレンダリングされないようにしてください。私はプリレンダリングのタイムアウトが何らかのループを引き起こすと考えています –

答えて

0

isPlatformBrowser条件でインターバルコードをラップするそれはあらかじめレンダリングされていません

関連する問題