Angular 2:找不到名字'订阅'

Ole*_*ann 27 rxjs typescript angular

当尝试设置属性的类型时,我得到错误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();
  }

}
Run Code Online (Sandbox Code Playgroud)

编辑:提供更详细的代码示例.

mxi*_*xii 56

你必须像这样导入它:

import { Subscription } from 'rxjs/Subscription';
Run Code Online (Sandbox Code Playgroud)

编辑 Angular 6

import { Subscription } from 'rxjs';
Run Code Online (Sandbox Code Playgroud)

看看这里:https: //angular.io/docs/ts/latest/guide/router.html并且该文档中有几个plunker链接.


uno*_*aii 12

角度6和角度7

import { Subscription } from 'rxjs';
Run Code Online (Sandbox Code Playgroud)


Kam*_*iec 5

您必须从" rxjs/Rx " 导入订阅.

import { Subscription } from "rxjs/Rx";
Run Code Online (Sandbox Code Playgroud)


Rad*_*ler 5

在这种情况下,只需该行加载类型

import {Subscription}  from "rxjs/Rx";
Run Code Online (Sandbox Code Playgroud)

我们可以按预期使用它:

private sub: Subscription;
Run Code Online (Sandbox Code Playgroud)