Angular构造函数中填写的列表未在方法中定义
Angular List Filled in constructor is Not defined in method
我有一个 Angular 9 组件,其服务注入构造函数并在构造函数内部用于填充特定模型的列表,如下所示:
export class translationtasksComponent implements OnInit {
usertaskslist: UserTaskType[];
constructor( public service3: UserService) {
service3.getTasks().subscribe(res => { this.usertaskslist = res as UserTaskType[] });
}
}
在同一个组件内,我有 2 个方法,我尝试使用之前的列表如下:
getFilteredUsers(options) {
return {
store: this.usertaskslist,
filter: options.data ? ["taskTypeId", "=", options.data.userTaskTypeTaskTypeId] : null
};
}
setUserValue(rowData: any, value: any) {
.
.
console.log( this.usertaskslist)
.
.
}
构造函数运行良好并填满了列表。
第一种方法也工作正常,但在第二种方法中,列表返回 "undefined"。
我尝试在 setUserValue 方法中再次调用该服务作为解决方法,但该服务也未定义且未被识别为服务。
注意:我正在使用带有 Angular 模板的 .net 核心。
这 2 个方法是由来自 DevExtreme 的 dxDataGrid 触发的事件。
我找到了一个解决方案,但我不知道我是否理解它的所有方面。
由于某种原因,编辑 dxDataGrid 单元格时触发的触发事件 (setUserValue) 似乎无法直接访问组件实例。但事实证明,我可以在构造函数中将组件实例传递给它,然后在我的处理程序中接收它并使用它。它运行良好,如下所示:
constructor(public service3: UserService) {
service3.getTasks().subscribe(res => { this.usertaskslist = res as UserTaskType[] });
.
.
let that = this,
origOnSetCellValue = this.setUserValue;
this.setUserValue = function () {
origOnSetCellValue.apply(this, [].slice.call(arguments, 0, 3).concat([that]));
};
}
.
.
setUserValue(rowData: any, value: any, currentData, componentInstance) {
var currentUserId = currentData.userTaskTypeUserId;
var currentTaskType = currentData.userTaskTypeTaskTypeId;
var currentUserTask = componentInstance.usertaskslist;
}
我有一个 Angular 9 组件,其服务注入构造函数并在构造函数内部用于填充特定模型的列表,如下所示:
export class translationtasksComponent implements OnInit {
usertaskslist: UserTaskType[];
constructor( public service3: UserService) {
service3.getTasks().subscribe(res => { this.usertaskslist = res as UserTaskType[] });
}
}
在同一个组件内,我有 2 个方法,我尝试使用之前的列表如下:
getFilteredUsers(options) {
return {
store: this.usertaskslist,
filter: options.data ? ["taskTypeId", "=", options.data.userTaskTypeTaskTypeId] : null
};
}
setUserValue(rowData: any, value: any) {
.
.
console.log( this.usertaskslist)
.
.
}
构造函数运行良好并填满了列表。 第一种方法也工作正常,但在第二种方法中,列表返回 "undefined"。 我尝试在 setUserValue 方法中再次调用该服务作为解决方法,但该服务也未定义且未被识别为服务。
注意:我正在使用带有 Angular 模板的 .net 核心。
这 2 个方法是由来自 DevExtreme 的 dxDataGrid 触发的事件。
我找到了一个解决方案,但我不知道我是否理解它的所有方面。 由于某种原因,编辑 dxDataGrid 单元格时触发的触发事件 (setUserValue) 似乎无法直接访问组件实例。但事实证明,我可以在构造函数中将组件实例传递给它,然后在我的处理程序中接收它并使用它。它运行良好,如下所示:
constructor(public service3: UserService) {
service3.getTasks().subscribe(res => { this.usertaskslist = res as UserTaskType[] });
.
.
let that = this,
origOnSetCellValue = this.setUserValue;
this.setUserValue = function () {
origOnSetCellValue.apply(this, [].slice.call(arguments, 0, 3).concat([that]));
};
}
.
.
setUserValue(rowData: any, value: any, currentData, componentInstance) {
var currentUserId = currentData.userTaskTypeUserId;
var currentTaskType = currentData.userTaskTypeTaskTypeId;
var currentUserTask = componentInstance.usertaskslist;
}