在我的Angular App中,我对node.js服务器进行了简单的调用。 HttpClient“得到” 函数返回正确的答案。这个答案我想存储在我的组件“接口”的变量中。但是在get请求的“subscribe”函数中,我的“this”指针并不指向我的组件。相反,它告诉我它是“SafeSubscriber”类型。对我的成员“interfaces”的任何调用都会导致以下错误: TypeError:无法读取未定义的属性'interfaces'
export class SettingsComponent implements OnInit {
public interfaces : string[];
constructor(private http: HttpClient) {
this.interfaces = [];
this.interfaces.push("huhu");
}
ngOnInit() : void {
this.http.get('http://localhost:3000/settings/interfaces').subscribe((data) => {
// Read the result field from the JSON response.
console.log(data);
this.interfaces.push("xxx");
Object.keys(data).forEach(function(k) {
console.log(k);
this.interfaces.push("xxx");
});
}),
err => {
console.log("error " + err);
};
}
}
正如您所看到的,我还尝试手动将一些值输入到数组中,以确保服务器响应不会导致问题。 任何帮助表示赞赏。
我使用此代码作为蓝图来自: https://angular.io/guide/http
@Component(...)
export class MyComponent implements OnInit {
results: string[];
// Inject HttpClient into your component or service.
constructor(private http: HttpClient) {}
ngOnInit(): void {
// Make the HTTP request:
this.http.get('/api/items').subscribe(data => {
// Read the result field from the JSON response.
this.results = data['results'];
});
}
}
答案 0 :(得分:0)
您在此声明中失去了对正确this
的引用:
Object.keys(data).forEach(function(k) {..})
在功能块代码this
内部引用调用上下文,这是订阅方法本身,这就是为什么interfaces
未定义的原因,因为它不是subscribe方法的属性。
您可以更改lambda的功能,它应该没问题:
Object.keys(data).forEach((k) => {..})