我创建了一个扩展方法。在该扩展方法中,我尝试使用httpClient调用Web API,但是正在调用HTTP的方法却给了我一个未定义的错误。
使用调试器时,我可以看到我的调试器没有进入该类,并且我不知道为什么。
注意:这是扩展方法,不是服务类
Extension.model.ts
declare global {
interface Object {
JsonServiceReceiver(): any[];
}
}
class serviceChecker {
constructor(private http: HttpClient) {}
asd() {
this.http.get('http://jsonplaceholder.typicode.com/posts').subscribe(data => {
console.log(data);
});
}
}
Object.defineProperty(Object.prototype, 'JsonServiceReceiver', {
value: function() {
// according to my knowledge I am getting an error here, while object creation.
let objservice: serviceChecker;
objservice.asd();
},
enumerable: false
});
export {}
错误:ERROR类型错误:无法读取未定义的属性'asd'
这是我尝试从中调用扩展方法的文件:
app.component.ts
import { Component, OnInit } from '@angular/core';
import { Employee } from './Employee.model';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
EmployeArray: Employee[] = [];
submit() {
this.EmployeArray = Object.JsonServiceReceiver();
console.log("data", this.EmployeArray);
}
}
我无法弄清楚自己在做什么错。同样,我不使用服务,而是在TypeScript中使用扩展方法。
答案 0 :(得分:2)
这种构造:let objservice : serviceChecker;
并不是真正地创建对象,而是将类型分配给变量。因此,变量 objservice 仅包含您的服务类型。要实际创建它,您需要使用let objservice = new serviceChecker()