Angular Can';t解析ObservableDataSource的所有参数:([object],?)
我目前正在使用。为了将我的ngrx/store连接到数据表CDK中,我扩展了数据源CDK的connect方法,以允许注入一个可观测值。以下是此问题的相关代码Angular Can';t解析ObservableDataSource的所有参数:([object],?),angular,unit-testing,jasmine,karma-runner,Angular,Unit Testing,Jasmine,Karma Runner,我目前正在使用。为了将我的ngrx/store连接到数据表CDK中,我扩展了数据源CDK的connect方法,以允许注入一个可观测值。以下是此问题的相关代码 export class ObservableDataSource extends DataSource<any> { private value: any[]; private key: string; constructor(value: any[], key) { super(); this.v
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() {}
}
但是,错误
失败:无法解析所有参数。
仍然显示。任何关于如何正确提供构造函数值的建议,以便Jasmine/Karma能够正确解析参数,我都非常感激。多谢各位 在仔细研究之后,我做了以下工作使它工作起来。首先,我意识到这是一个服务,而不是一个组件。因此,我将我的@Component()
装饰器切换为@Injectable
。
其次,我为该服务提供了构建服务的价值,如下所示:
providers: [
{provide: ObservableDataSource, useValue: new ObservableDataSource([], 'visible')}
]
这解决了上述问题,并允许我继续使用TestBed 在仔细研究之后,我做了以下工作使它工作起来。首先,我意识到这是一个服务,而不是一个组件。因此,我将我的
@Component()
装饰器切换为@Injectable
。
其次,我为该服务提供了构建服务的价值,如下所示:
providers: [
{provide: ObservableDataSource, useValue: new ObservableDataSource([], 'visible')}
]
这解决了上述问题,并允许我继续使用TestBed 您的
observedDataSource
实际工作吗?我认为,在单元测试之外的应用程序中使用组件时,您也会遇到同样的错误。可以注入字符串或数组之类的值,但需要使用@Inject
函数来实现。看,它确实有用。执行如下操作:this.dataSource=newobservedDatasource(this.value,'visible')代码>按预期工作。我明白了。然后,您必须在单元测试中执行相同的操作。试图提供像您这样的值是行不通的。好的。所以,出于好奇,我如何在单元测试中做同样的事情呢?你不必这么做。是用来了解我的意思的东西。这个例子是测试一个服务,但是想法仍然是一样的;在新建组件时,您可能会包含参数。您的observedatasource
实际工作吗?我认为,在单元测试之外的应用程序中使用组件时,您也会遇到同样的错误。可以注入字符串或数组之类的值,但需要使用@Inject
函数来实现。看,它确实有用。执行如下操作:this.dataSource=newobservedDatasource(this.value,'visible')代码>按预期工作。我明白了。然后,您必须在单元测试中执行相同的操作。试图提供像您这样的值是行不通的。好的。所以,出于好奇,我如何在单元测试中做同样的事情呢?你不必这么做。是用来了解我的意思的东西。这个例子是测试一个服务,但是想法仍然是一样的;在新建组件时,应该包括参数。