无法解析ObservableDataSource的所有参数:([object Object] ,?)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法解析ObservableDataSource的所有参数:([object Object] ,?)相关的知识,希望对你有一定的参考价值。

我目前正在使用angular material data-table cdk。为了将我的ngrx / store连接到数据表CDK,我正在扩展DataSource CDK的connect方法,以允许注入一个observable。以下是此问题的相关代码

export class ObservableDataSource extends DataSource<any> {
  private value: any[];
  private key: string;
  constructor(value: any[], key) {
    super();
    this.value = value;
    this.key = key;
  }

  connect() {
    return combineLatest(this.value, (data) => {
      return data[this.key];
    });
  }

  disconnect() {} 
}

当单元测试这个组件(对于好奇的头脑有一个@Component装饰器,只是没有显示),我收到以下错误:Failed: Can't resolve all parameters for ObservableDataSource: ([object Object], ?).

然后我继续为值和键提供值:

beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [ ObservableDataSource ],
      providers:[
        {provide: 'value', useValue: []},
        {provide: 'key', useValue: ''},
      ]
    })
    .compileComponents();
  }));

但是,错误Failed: Can't resolve all parameters..仍然出现。关于如何正确提供构造函数值的任何建议,以便Jasmine / Karma可以正确地解析参数是非常值得赞赏的。谢谢。

答案

在进一步研究之后,我做了以下工作以使其工作。首先,我意识到这是一项服务,而不是一个组件。所以我为@Component()切换了我的@Injectable装饰器。其次,我为服务提供了构造服务的值,如下所示:

providers: [
   {provide: ObservableDataSource, useValue: new ObservableDataSource([], 'visible')}
]

这解决了上述问题,并允许我继续使用TestBed。

以上是关于无法解析ObservableDataSource的所有参数:([object Object] ,?)的主要内容,如果未能解决你的问题,请参考以下文章

无法解析的外部符号 C++

C++无法解析的外部命令和外部符号

无法解析的外部符号

ACE编程,无法解析外部符号

Constraint 无法解析为类型

error LNK2001: 无法解析的外部符号