web-dev-qa-db-ja.com

Angular 2:名前 'Subscription'が見つかりません

属性のタイプを設定しようとすると、エラーCannot find name 'Subscription'。どのパッケージからインポートしますか?

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();
  }

}

編集:より詳細なコード例を提供します。

25
Ole Spaarmann

次のようにインポートする必要があります。

import { Subscription } from 'rxjs/Subscription';

[〜#〜] edit [〜#〜]Angular 6

import { Subscription } from 'rxjs';

こちらをご覧ください: https://angular.io/docs/ts/latest/guide/router.html そして、そのドキュメントにはいくつかのプランカーがリンクされています。

52
mxii

in angular 6 and angular 7

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

rxjs/Rx」からSubscriptionをインポートする必要があります。

import { Subscription } from "rxjs/Rx";
5

この場合、その行だけがタイプをロードする必要があります

import {Subscription}  from "rxjs/Rx";

そして、期待どおりに使用できます。

private sub: Subscription;
5
Radim Köhler