javascript - 错误类型错误:未定义。何时从服务中提供数据
问题描述
我正在尝试创建一个处理程序,该处理程序将根据此“资源”是否存在“类别”来创建一个类别数组。最后一个方法抛出错误。错误类型错误:“this.allProjectResources 未定义”
import { ResourceCategory } from './resourceCategory';
import { Injectable } from '@angular/core';
import { Resource } from './resource';
import { HttpService } from '../project/http.service';
import { isNullOrUndefined } from 'util';
@Injectable()
export class ResourceService {
public allProjectResources: Resource[];
public allResourceCategories: ResourceCategory[];
uniqueResCategories = new Set();
constructor(private http: HttpService) { }
getAllResourcesByProjId(projid: number) {
if (!(isNullOrUndefined(this.allProjectResources))) {
this.allProjectResources.length = 0;
}
this.http.getAllResourcesById(projid).subscribe((data: Resource[]) =>
this.allProjectResources = data);
}
getAllResourceCategories() {
this.http.getAllResourceCategories().subscribe((data: ResourceCategory[]) =>
this.allResourceCategories = data);
}
getAllUniqieResourceCategories(){
this.allProjectResources.forEach(resource => {
this.allResourceCategories.forEach(function (category) {
if (resource.resourceCategoryId == category.id) {
this.uniqueResCategories.add(category.name);
console.log(category.name);
};
});
});
}
}
解决方案
将类变量初始化为空数组
public allProjectResources: Resource[] = [];
public allResourceCategories: ResourceCategory[] = [];
此外,您应该在getAllResourcesByProjId()
方法中分配空数组而不是改变长度属性
getAllResourcesByProjId(projid: number) {
if (!(isNullOrUndefined(this.allProjectResources))) {
// this.allProjectResources.length = 0;
this.allProjectResources = [];
}
...
}
推荐阅读
- reactjs - 单击时 Redux 状态计数未更新
- java - Libgdx firebase robovm 绑定
- php - 将 JSON 对象作为字符串而不是数组发送
- reactjs - How Do I Create A 2 Column Form WIth React Material-UI?
- ios - React-native fetch (ios) RANDOMLY 使 https 请求失败,网络请求失败
- c++ - gcc 在这个概念定义中是否错误地评估了 std::declval ?
- java - 在junit类中排序
- ios - Braintree Apple Sandbox Pay 扫描指纹 iOS 后显示付款未完成错误
- google-cloud-platform - How do you implement role based authorisation after authenticating with Google Cloud IAP?
- php - 如何关闭或退出安装在我的 Ubuntu 18.04 中的 Docker?