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();
}
}
なぜあなたはコンストラクタとngOninitで関数を呼び出していますか?私はsetIntervalの代わりにObseravble.timer(1000)を推奨し、コンポーネントのngDestroyにunsubscribeすると、 –
私はコンストラクタとngOnInitの両方でこの関数を呼び出すつもりはありません。私はちょうど私が試した2つの場所を示したい。両方ともプリレンダーのタイムアウトを引き起こします。私はObservable.timer()アプローチを試みたことを示すために質問を編集しました。 – drewob
isPlatformBrowserでインターバルコードをラップして、プレレンダリングされないようにしてください。私はプリレンダリングのタイムアウトが何らかのループを引き起こすと考えています –