web-dev-qa-db-fra.com

Angular 2: Impossible de trouver le nom 'Abonnement'

Lorsque j'essaie de définir le type d'un attribut, j'obtiens l'erreur Cannot find name 'Subscription'. De quel paquet dois-je l'importer?

import { Component, OnDestroy, OnInit } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';

// I'm missing an import here. Just don't know which package to load from.

@Component({
  moduleId: module.id,
  selector: 'my-component',
  templateUrl: 'my.component.html',
  styleUrls: ['my.component.css']
})
export class MyComponent implements OnInit, OnDestroy {

  private sub: any;

  constructor(private route: ActivatedRoute,
    private router: Router) {}

  ngOnInit() {
    this.sub = this.route.params.subscribe(params => {
       let id = +params['id']; // (+) converts string 'id' to a number
     });
  }

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

}

Edit: Fournissez un exemple de code plus détaillé.

25
Ole Spaarmann

Vous devez l'importer comme ceci:

import { Subscription } from 'rxjs/Subscription';

[~ # ~] modifier [~ # ~] Angular 6

import { Subscription } from 'rxjs';

Jetez un oeil ici: https://angular.io/docs/ts/latest/guide/router.html et il y a plusieurs plongeurs liés dans cette documentation.

52
mxii

dans angular 6 et angular 7

import { Subscription } from 'rxjs';
12
unos baghaii

Vous devez importer Abonnement à partir de " rxjs/Rx ".

import { Subscription } from "rxjs/Rx";
5
Kamil Myśliwiec

Dans ce cas, juste cette ligne devrait charger le type

import {Subscription}  from "rxjs/Rx";

Et nous pouvons l'utiliser comme prévu:

private sub: Subscription;
5
Radim Köhler