首页 > 解决方案 > 导出类的公共属性 X 具有或正在使用来自外部模块“/rxjs/internal/Observable”的名称“Observable”,但无法命名

问题描述

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

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”具有或正在使用来自外部模块“/rxjs/internal/Observable”的名称“Observable”,但无法命名。

标签: angulartypescriptrxjsbehaviorsubject

解决方案


在我的情况下,错误是针对 Angular 中的 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

}

推荐阅读