过滤器返回photos数组的副本,但是我指定了我想要的照片,因此我将拥有一个带有1个索引的数组。然后,我尝试将对象内部的属性设置为false,并发生“无法设置角度未定义的属性'ismain'”。有什么想法吗?
这是我的代码。
setMainPhoto(photo: Photo) {
this.userService
.setMainPhoto(this.authService.decodedToken.nameid, photo.id)
.subscribe(
() => {
// We use the array filter method to filter the photos apart from the main photo
// Filter returns a copy of the photos array. Filters out anything that it doesn`t match in the p
this.currentMain = this.photos.filter(p => p.ismain === true)[0];
this.currentMain.ismain = false;
photo.ismain = true;
this.alertify.success('Successfully set to profile picture');
},
error => {
this.alertify.error('Photo could not be set as profile picture');
}
);
}
在上述方法中,发生错误。 下面是我的照片界面。
export interface Photo {
id: number;
url: string;
dateadded: Date;
ismain: boolean;
description: string;
}
更新
已解决的问题
服务器的响应需要与对象属性匹配。因此,我不得不更改属性接口以匹配从服务器返回的JSON对象。
答案 0 :(得分:1)
尝试一下
setMainPhoto(photo: Photo) {
this.userService
.setMainPhoto(this.authService.decodedToken.nameid, photo.id)
.subscribe(
() => {
// We use the array filter method to filter the photos apart from the main photo
// Filter returns a copy of the photos array. Filters out anything that it doesn`t match in the p
this.currentMain = this.photos.filter(p => p.ismain === true)[0];
if (this.currentMain) {
this.currentMain.ismain = false;
photo.ismain = true;
this.alertify.success('Successfully set to profile picture'); }
},
error => {
this.alertify.error('Photo could not be set as profile picture');
}
);
}
如果此方法有效,则过滤器不返回任何内容。
答案 1 :(得分:1)
有趣的是,我也曾想过这个。 Typescript的大小写非常严格,如果您与json对象不完全匹配,它将无法正常工作,创建新属性等。
我发现在构建我的打字稿模型之前先查看json返回值很有帮助,以确保我匹配要发送的对象。