angular - 类型 Program[] 不可分配给 string[]
问题描述
我有下面的课。我想做的是过滤活动程序和非活动程序,然后为这些程序获取程序名称,作为字符串数组。
这是程序类:
export class Program {
ID: number;
ProgramDescription: string;
ProgramName: string;
ProgramStatus: string;
FiscalYear: string;
SupervisorID: string;
DBN: string;
IsActive: string;
}
以下是我在服务中编写的方法:
getPrograms(): Observable<Program[]> {
return this.httpClient.get<Program[]>(environment.apiBaseURL + 'api/Program')
.pipe(
map(data => data)
);
}
getActivePrograms(): Observable<Program[]> {
return this.getPrograms()
.pipe(
map(data => data.filter(program => program.IsActive === 'Y'))
);
}
getActiveProgramNames(): Observable<string[]> {
return this.getActivePrograms()
.pipe(
map(data => data.filter(program => program.ProgramName.toString())
);
}
在 getActiveProgramNames() 中,我收到以下错误:
Type Program[] is not assignable to type string[]
解决方案
尝试map
getActiveProgramNames(): Observable<string[]> {
return this.getActivePrograms()
.pipe(
map(data => data.map(program => program.ProgramName.toString())
);
}
推荐阅读
- r - 使用多变量列条件过滤观察
- console - 我可以为两个独立的 Python 代码提供两个独立的 Spyder 控制台吗?
- visual-studio - Can Visual Studio use an .editorconfig not in the directory hierarchy?
- javascript - 如何使用 es6 的动态导入从静态导入模块?
- c - Unix(Mac OS)终端不将 Ctrl+D 视为 EOF
- time-complexity - 以下代码循环的时间复杂度?
- c# - Linq 在运行时根据列表中的属性名称选择属性
- angular - 使用 Nativescript cli 创建组件时出错
- containers - Openshift + Tomcat9 + JSF -> jsf.application.resource.unable_to_create_compression_directory
- android - 如何通过在 AnimatedBuilder 中点击来关闭带有 Dismissible 小部件的项目?