angular-无法使用通用角度运行rxjs interval

时间:2019-03-27 05:51:48

标签: angular rxjs

我通过RXJS的间隔时间进行轮播效果来更改参数。

我发现它可以在开发模式下工作(但可以),但是在universal模式下不能正常工作,无法进入页面。

例如:

n: number = 0;
max: number = 5;

constructor(){}

ngOnInit() {
  this.carousel();
}

carousel() {
  this.subscription = interval(2000).subscribe(() => {
      //In universal, the console.log message show in node.js background log message not in browser console message. Each time the page is reorganized, it will be executed once and cannot be destroyed.
      console.log(`show the photo: ${this.n}`);
      if (this.n>this.max){
        this.n = 0;
      }else{
       this.n = this.n+1;
      }
  }
}

ngOnDestroy() {
  this.subscription.unsubscribe();
}

我在universal模型中发现,假设轮播效果在页面B上,则可以通过页面A上的链接成功进入页面B,但直接打开页面B将失败。

我尝试在ngAfterContentInit()中启动轮播,但无法正常工作。

1 个答案:

答案 0 :(得分:0)

如果您使用通用角度,则需要使用isPlatformBrowser排除只能在前端运行的代码。

示例:

import { isPlatformBrowser } from '@angular/common';
import { PLATFORM_ID } from "@angular/core";

constructor(
    @Inject(PLATFORM_ID) private platformId: Object
  ) { }

do(){
    if (isPlatformBrowser(this.platformId)) {
      //do something, only runs on the front end
    }
}