0

在此处输入图像描述我的角度 ts 文件出现上述错误。但无法理解修复。任何人帮助我

ts文件:

import { Component, OnInit, OnDestroy } from '@angular/core';
import { ScullyRoute, ScullyRoutesService } from '@scullyio/ng-lib';
import { Subscription } from 'rxjs';

@Component({
  selector: 'app-articles',
  templateUrl: './articles.component.html',
  styleUrls: ['./articles.component.scss']
})
export class ArticlesComponent implements OnInit, OnDestroy {

  posts: ScullyRoute[] = [];
  private routeSub: Subscription | undefined;

  constructor(private scullyService: ScullyRoutesService) { }

  ngOnInit(): void {
    this.routeSub = this.scullyService.available$.subscribe(posts => {
      this.posts = posts.filter(post => post.title);
    });
  }

  ngOnDestroy(): void {
    this.routeSub?.unsubscribe();
  }

}
4

1 回答 1

1

也许 scully-route-service 使用不同版本的 rxjs。作为一种解决方案,您可以使用 rxjs 管道运算符 takeUntil 和取消订阅的主题,而不是保存订阅的实例。下面的示例代码:

onDestroy$: Subject<boolean> = new Subject();

ngOnInit() {
 this.scullyService.available$.pipe(takeUntil(this.destroy$)).subscribe(() => 
{ //do stuff 
})
this.service.someSubscriber2.pipe(takeUntil(this.destroy$)).subscribe(() => 
{ //do stuff 
})
this.service.someSubscriber3.pipe(takeUntil(this.destroy$)).subscribe(() => 
{ //do stuff 
})
}

ngOnDestroy() {
  this.destroy$.next(true);
  this.destroy$.unsubscribe();
}

或者您可以通过升级到 angular 13 来解决问题的核心,这将是最好的选择。如果您无法升级到 13,我建议将您的 scully 版本降级到支持 angular 12 的版本。

如果您不打算升级到 Angular 13,那么支持 rx 6 的 scully 的 LTS 版本是 1.1.4: https://registry.npmmirror.com/@scullyio/init/1.1.4?spm=a2c6h.24755359.0。 0.60394d45aVQlxP&file=1.1.4

您可以通过运行安装它npm install @scullyio/init@1.1.4

于 2021-11-25T15:12:48.417 回答