【发布时间】:2020-04-23 23:14:05
【问题描述】:
我有一个 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)
.
.
}
构造函数运行良好并填充列表。 第一种方法也可以正常工作,但在第二种方法中,列表返回“未定义”。 我尝试在 setUserValue 方法中再次调用该服务作为解决方法,但该服务也未定义且未被识别为服务。
注意:我使用 .net core 和 Angular 模板。
这 2 个方法是 dxDataGrid 从 DevExtreme 触发的事件。
【问题讨论】:
-
你什么时候触发第二种方法?有没有可能在您的订阅发出任何价值之前触发它?您还可以在订阅中放置一个 if 块,以检查 res 是否包含任何有效负载,然后再将其分配给您的类属性,因为它的异步性质。
-
构造函数先填充列表,并在html中很好的显示。之后,当我在 dxDataGrid 中编辑已经很好地显示列表的单元格值时,会触发第二种方法。但该列表在事件处理程序 (setUserValue) 中未定义。问题是如果我尝试在第二种方法中调用它,我什至无法订阅服务,因为它返回一个未定义的错误。
标签: angular devextreme angular9