Я искал решение проблемыГлобальная функция/служба для обнаружения и замены неопределенных свойств объекта | Угловая 2 -TS
core.umd.js:3523 ORIGINAL EXCEPTION: Cannot read property 'fullName' of undefined
Исключение пришло из шаблона на получение конкретного свойства:
{{project.collaborators["0"]["fullName"]}}
Я нашел несколько полезных answer слишком ,
, но я искал способ, чтобы определить глобальную службу, которая будет проверять каждый объект и заменить недостающее/пустое свойство со значением по умолчанию т.е. -
вместо проверки в каждом шаблоне каждого свойстве и сделать код меньше глючит ,
// undefined-obj.service.ts
import { Injectable } from '@angular/core';
@Injectable()
export class UndefinedObjectsGlobalService {
private charecterToReplace: string = '-'; // set defualt value
replaceDefaultCharecter(object: any, charecterToReplace: string): any {
this.charecterToReplace = charecterToReplace;
// create instance vars to store keys and final output
let keyArr: any[] = Object.keys(object),
var dataArr: any[];
// loop through the object,
// pushing values to the return array
keyArr.forEach((key: any) => {
// if key is null at any iteration then replace is with given text
if (key == null){
dataArr.push(object[key] = this.charecterToReplace);
// else push
}else{
dataArr.push(object[key]);
}
});
// return the resulting array
// need to convert is back to object any idea ?
return dataArr;
}
}
, как я новичок в угловой поэтому класс undefinedObjectsGlobalService
может быть багги
, пожалуйста, помогите.
Где вы используете '.fullName'? –
Где находится объект, содержащий свойство .fullName? насколько мне известно, форсирование значений неопределенными свойствами не является хорошей практикой. – briosheje
в вашем случае проблема заключается не в том, что полное имя не определено, но что имя объекта fullname является свойством undefined. В основном список ваших соавторов на самом деле пуст. Я не уверен, как вы это исправите, но я сомневаюсь, что вы могли бы сделать это в общем виде. – toskv