导出类的公共属性X具有或正在使用外部模块“ / rxjs / internal / Observable”中的名称“ Observable”,但不能命名

时间:2019-01-11 10:55:47

标签: angular typescript rxjs behaviorsubject

我已经实现了在组件之间共享数据的服务:

import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs';

@Injectable({
  providedIn: 'root'
})
export class DataService {
  private dataSource = new BehaviorSubject(Object);
  public currentData = this.dataSource.asObservable();

  constructor() {}

  changeData(data) {
    this.dataSource.next(data);
  }
}

一切正常,直到我尝试构建该项目。然后我得到了这个错误:

  

错误TS4029:导出类的公共属性“ currentData”具有或为   使用外部模块的名称“ Observable”   “ / rxjs /内部/可观察”   但无法命名。

2 个答案:

答案 0 :(得分:0)

经过一番调查,我意识到我正在使用引用 Observable 的属性,但找不到该属性。要解决此问题,我只需添加缺少的Observable导入,然后在currentData变量中输入内容:

import { Injectable } from '@angular/core';
import { BehaviorSubject, Observable } from 'rxjs';

@Injectable({
  providedIn: 'root'
})
export class DataService {
  private dataSource = new BehaviorSubject(Object);
  public currentData: Observable<Object> = this.dataSource.asObservable();

  constructor() {}

  changeData(data) {
    this.dataSource.next(data);
  }
}

但是只有将项目转换为lib时才会出现错误。

答案 1 :(得分:0)

在我的情况下,错误是由于Ionify库出现在Angular中,并且波纹管代码导致了角度库编译时出现错误:

import icSettings from '@iconify/icons-ic/twotone-settings';
...
@Component({
   ....
})
export class ConfigPanelToggleComponent implements OnInit {

  icSettings = icSettings; // This causes error

}

解决方案可以使用任何类型,因为@iconify库不会导出所需的类型。

import icSettings from '@iconify/icons-ic/twotone-settings';
...
@Component({
   ....
})
export class ConfigPanelToggleComponent implements OnInit {

  icSettings: any = icSettings; // No error

}