Angular 2:找不到名称“订阅”

Posted

技术标签:

【中文标题】Angular 2:找不到名称“订阅”【英文标题】:Angular 2: Cannot find name 'Subscription' 【发布时间】:2016-12-24 04:03:39 【问题描述】:

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


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

【问题讨论】:

我正在关注 Angular 2 文档。他们经常遗漏用户必须研究并浪费大量时间的关键信息——这很烦人。如果有帮助,我可以编写一个示例组件。给我一秒钟。 【参考方案1】:

在 Angular 9 中,您可以使用以下方式导入订阅:

import  Subscription  from 'rxjs/internal/Subscription';

【讨论】:

【参考方案2】:

你必须像这样导入它:

import  Subscription  from 'rxjs';

原始答案

import  Subscription  from 'rxjs/Subscription';

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

【讨论】:

【参考方案3】:

在角度 6 和角度 7 中

import  Subscription  from 'rxjs';

【讨论】:

【参考方案4】:

在这种情况下,只有那一行应该加载类型

import Subscription  from "rxjs/Rx";

我们可以按预期使用它:

private sub: Subscription;

【讨论】:

【参考方案5】:

您必须从“rxjs/Rx”导入订阅

import  Subscription  from "rxjs/Rx";

【讨论】:

以上是关于Angular 2:找不到名称“订阅”的主要内容,如果未能解决你的问题,请参考以下文章

Angular 2 单元测试:找不到名称“描述”

angular2 找不到名称要求

TS2304:在 Webpack / Angular 2 中找不到名称“描述”

Angular 2在formArrays上找不到具有未指定名称属性的控件

如何修复错误在 Angular 2 clickeditor 中找不到名称“对象”

Angular 7:“找不到具有未指定名称属性的控件”