【发布时间】:2020-07-08 20:04:50
【问题描述】:
我正在使用 Angular 9。我得到一个过滤的对象列表。我想更改返回对象的值。
我有以下代码:
private setFilteredApproverOptions(): void {
for (const field in this.approvalEditFormGroup.controls) {
console.log(field);
this.approvalEditFormGroup.get(field).valueChanges.subscribe(value => {
if (value && typeof value.valueOf() === "string") {
this.filteredApproverOptions = this._filter(value);
this.filteredApproverOptions.forEach(person => {console.log(person)});
}
});
}
}
private _filter(value: string): Observable<Person[]> {
const filterValue: string = value.toLowerCase();
let respApprovalState: Observable<Person[]> = this.getApproverOptions(filterValue);
respApprovalState.subscribe(approverOptions => {
return approverOptions.filter(option => (option.firstName.toLowerCase().includes(filterValue) || option.lastName.toLowerCase().includes(filterValue)));
});
return respApprovalState;
}
private getApproverOptions(searchString: string): Observable<Person[]> {
let companyName: string = this.approvalEdit.companyName;
let respApprovalState: Observable<Person[]> = this.service.getApprovers(companyName, searchString);
respApprovalState.subscribe((approverOptions: Person[]) => {
this.approverOptions = approverOptions as Person[];
return approverOptions;
},
error => {
console.log('Error calling getApprovers service', error);
return null;
});
return respApprovalState;
}
下面一行:
this.filteredApproverOptions.forEach(person => {console.log(person)});
有这个输出:
我想将x 和y 值设置为硬编码值(例如1)。
例如
x: 1, y: 1, personId: 105702...
问题
如何设置上述x 和y 值?
更多信息:
export class Person {
public constructor(init?: Partial<Person>) {
Object.assign(this, init);
}
x: number;
y: number;
personId: number;
firstName: string;
lastName: string;
email: string;
companyName: string;
staffCode: string;
}
【问题讨论】:
-
这能回答你的问题吗? Add property to an array of objects
-
它是
Observable而不是array。所以我不能在this.filteredApproverOptions上打电话给.map。 -
如果是 Observable 则调用 pipe(map()) 代替。
-
请edit您的问题的标题和正文,以明确您正在处理
Observables
标签: javascript angular