【问题标题】:Public property X of exported class has or is using name 'Observable' from external module "/rxjs/internal/Observable" but cannot be named导出类的公共属性 X 具有或正在使用来自外部模块“/rxjs/internal/Observable”的名称“Observable”,但无法命名
【发布时间】:2019-06-06 06:59:32
【问题描述】:

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

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/内部/可观察” 但不能命名。

【问题讨论】:

    标签: angular typescript rxjs behaviorsubject


    【解决方案1】:

    在我的情况下,错误是 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
    
    }
    

    【讨论】:

    • 简直太棒了!
    【解决方案2】:

    经过一番调查,我意识到我正在使用引用 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 时才会出现错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-09
      • 2017-02-13
      • 2017-09-06
      • 2018-01-06
      • 1970-01-01
      • 2018-07-09
      • 2019-01-12
      • 2020-04-05
      相关资源
      最近更新 更多