首页 > 解决方案 > 此导入已列入黑名单,请改为导入子模块

问题描述

查询 1

下面是我的应用程序组件的导入部分,其中可观察到的导入使代码正常工作。

import {Component, OnDestroy, OnInit} from '@angular/core';
import { Observable } from 'rxjs/Rx';
import 'rxjs/add/observable/interval';
import 'rxjs/add/operator/take';

但是,IDE 将 ["rxjs/Rx" ] 显示为列入黑名单的用法,但它仍然使用浏览器控制台上的 Observable.interval(1000) 为我提供了所需的输出。为什么 IDE 说这是列入黑名单的用法 :( 虽然它有效!

查询 2

我尝试的初始代码如下,但它在控制台上抛出错误并且没有给我想要的间隔输出到控制台。

import {Component, OnDestroy, OnInit} from '@angular/core';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/interval';
import 'rxjs/add/operator/take';

控制台错误输出

rxjs_Observable__WEBPACK_IMPORTED_MODULE_1__.Observable.interval 不是 AppComponent.push../src/app/app.component.ts.AppComponent.ngOnInit (app.component.ts:15) 在 checkAndUpdateDirectiveInline (core.js:9250) 在 checkAndUpdateNodeInline ( core.js:10514) 在 checkAndUpdateNode (core.js:10476) 在 debugCheckAndUpdateNode (core.js:11109) 在 debugCheckDirectivesFn (core.js:11069) 在 Object.eval [as updateDirectives] (AppComponent_Host.ngfactory.js? [sm ]:1) 在 Object.debugUpdateDirectives [as updateDirectives] (core.js:11061) at checkAndUpdateView (core.js:10458) at callWithDebugContext (core.js:11351)

这是正确的方法,请求建议。

标签: angularangular-observable

解决方案


  • 首先,Never import from rxjs/Rx, because it'll include every single operator, static method, scheduler, and utility that you probably don't need.如果您不关心捆绑包的大小,则可以使用rxjs/Rx.
  • 你确定你只导入Observable一次。检查是否从主模块和子模块两次导入。您的项目可能正在访问其中一些global version与添加方法Observable不同的 Observable 。如果您不小心将两个版本的应用程序捆绑在一起,则可能会发生这种情况,一个是全局的,另一个是您在此处导入的。intervals()'rxjs/add/observable/interval'rxjs

  • 如果它仍然不起作用,您可以尝试interval在模块中的静态上下文中导入。利用import { interval } from 'rxjs/add/observable/interval';


推荐阅读