gpt4 book ai didi

Angular 2 : Supplied parameters do not match any signature of call target

转载 作者:搜寻专家 更新时间:2023-10-30 21:20:07 24 4
gpt4 key购买 nike

我创建了自己的 Observable 服务

import { Injectable, EventEmitter, Output} from '@angular/core';

@Injectable()
export class ObservableService {
data = [];
@Output eventEmitter:EventEmitter = new EventEmitter();

setSharedData(key, value) {
this.data[key] = value;
this.eventEmitter.emit(this.data);
}

getSharedData() {
return this.data;
}
}

这是一个用法示例

ngOnInit() {
this._observable.eventEmitter.subscribe((data) => {
console.log(data);
})
}

所以目前在编译时说

app/services/data-observable.service.ts(6,5): error TS1240: Unable to resolve signature of property decorator when called as an expression.
Supplied parameters do not match any signature of call target.

这是指这个特定的字符串,

@Output eventEmitter:EventEmitter = new EventEmitter();

但是服务很完美,有什么错误的建议吗?

最佳答案

Output() 后缺少括号.虽然Output()在服务中不是必需的。这仅在组件或指令中是必需的,因为这样您就可以使用 (eventEmitter)="onEventEmit($event)"模板中的符号。

另一方面,您缺少通用 EventEmitter<T> 的类型注释:

eventEmitter: EventEmitter<any> = new EventEmitter();

eventEmitter: EventEmitter<boolean> = new EventEmitter<boolean>();

在此之上,EventEmitters只能在 @Component 内部使用.如果您想要类似的功能,请使用 Subject来自 rxjs .

subject: Subject<boolean> = new Subject<boolean>();

关于 Angular 2 : Supplied parameters do not match any signature of call target,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41297148/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com