我需要传递服务的方法作为参数。文件夹结构如下:
-app.module.ts
-模块
| ___ main_component
-共享模块
| ___ shared_component
| ___共享服务
我的shared_service仅包含一种方法,如下所示:
@Injectable({providedIn: 'root'})
export class SharedService
{
methodUrl = "some_http_url";
constructor(private http: HttpClient)
{
}
getStatuses() : Observable<any>
{
return this.http.get<any>(this.methodUrl);
}
}
在我的main_component中,创建一个名为data的对象,其功能作为参数
createData(){
this.data = this.SharedService.getStatuses.bind(this);
}
并将该数据作为@Input()参数传递到我的shared_component。
当我尝试从ngOnOnit()调用它时
export class SharedComponent implements OnInit{
@Input()
data: any;
result: any;
constructor() {}
ngOnOnit(){
this.data.subscribe((response) => this.result = response)
}
}
控制台中显示错误消息“ TypeError:无法读取未定义的属性'get'”。我发现该错误是返回this.http.get(this.methodUrl)的原因,因为HttpClient未定义。
任何人都曾经遇到过该错误并且可以分享有关该错误的知识吗?
答案 0 :(得分:0)
您可能应该将对象SharedService
而不是this
作为上下文传递给bind()
方法,因为getStatuses
似乎在使用中,而不是组件。
createData(){
this.data = this.SharedService.getStatuses.bind(this.SharedService);
}