web-dev-qa-db-fra.com

Le type générique Subject <T> nécessite 1 argument (s) de type. - Angular

Je reçois des données de mon service et j'ai le rouge sur le fait qu'il est important de se désinscrire après s'être abonné, et voici comment je l'ai fait:

export class RItemComponent implements OnInit {

  apiPath = environment.apiUrl;
  private ngUnsubscribe: Subject = new Subject();

  constructor(private _sharedService: SharedService) { }

  rItems: Product[];

  ngOnInit() {
    this._sharedService.
      getReceiptItem().takeUntil(this.ngUnsubscribe).
      subscribe(products => this.rItems = products);
  }

  ngOnDestroy() {
    this.ngUnsubscribe.next();
    this.ngUnsubscribe.complete();
  }
}

Mais maintenant, je reçois une erreur:

Le sujet de type générique nécessite 1 argument (s) de type. souscrire

Je ne comprends pas pourquoi?

Toute aide serait géniale, merci!

6
Roxy'Pro

La classe Subject a un paramètre de type générique dans TypeScript. Cela signifie que les instances de cette classe ne peuvent être créées qu'en passant un paramètre de type supplémentaire, comme ceci:

private ngUnsubscribe: Subject<MyClass> = new Subject();
8
ggradnig

Ajouter un type générique pour le sujet

private ngUnsubscribe: Subject<any> = new Subject();
11
Sachila Ranawaka