Я работаю в Angular 8. У меня есть класс модели с именем Basic
, для хранения базовой c информации профиля. В моем компоненте объект типа Basic
будет возвращен из Service
, служба получит значения с сервера. В моем компоненте, когда я печатаю объект Basic
, он показывает, что есть значения, но когда я пытаюсь получить доступ к этим значениям, он показывает неопределенный. Мой класс Basic
имеет геттер / сеттер.
Сервисный код
bas: Basic = new Basic();
public getCurrentUserBasic() {
return this.http.get<Basic>(
'http://127.0.0.1:8080/public/profile/basic/findOneByUser', this.authService.getHeader(),
).subscribe((b: Basic) => {
this.loading = false;
console.log(b);
// phone number
for (const key in b['phone_number']) {
const phoneNumber = new PhoneNumber();
phoneNumber.$id = b['phone_number'][key]['id'];
phoneNumber.$number = b['phone_number'][key]['number'];
this.phoneNumbers.push(phoneNumber);
}
// basic information
this.bas.$id = b['id'];
this.bas.$name = b['name'];
this.bas.$birthDate = b['birthDate'];
this.bas.$gender = b['gender'];
this.bas.$blood_Group = b['blood_Group'];
this.bas.$religion = b['religion'];
this.bas.$email = b['email'];
});
}// get current user basic.
public getBasicInformation() {
return this.bas;
}
Компонент
public setBasicInformation() {
try {
var basic: Basic = this.basicService.getBasicInformation();
this.name = basic.$name;
console.log(this.name);
console.log('\n\n name : ' + basic['name']);
console.log('\n\n $name : ' + basic.$name);
this.birthDate = basic.$birthDate;
this.gender = basic.$gender;
console.log(basic);
} catch (e) {
console.log('Error in Setting Basic Information!');
}
}
Ниже напечатаны строки undefined
.
console.log(this.name);// should not work, as property is private in model class.
console.log('\n\n name : ' + basic['name']);
console.log('\n\n $name : ' + basic.$name);
Пока результат этой строки console.log(basic);
ниже:
Класс модели
export class Basic {
private id: string;
private userId: string;
private name: string;
private birthDate: string;
private care_of: string;
private gender: string;
private maritalStatus: string;
private profession: string;
private blood_Group: string;
private available: string;
private religion: string;
private email: string;
/**
* Getter $id
* @return {string}
*/
public get $id(): string {
return this.id;
}
/**
* Getter $userId
* @return {string}
*/
public get $userId(): string {
return this.userId;
}
/**
* Getter $name
* @return {string}
*/
public get $name(): string {
return this.name;
}
/**
* Getter $birthDate
* @return {string}
*/
public get $birthDate(): string {
return this.birthDate;
}
/**
* Getter $care_of
* @return {string}
*/
public get $care_of(): string {
return this.care_of;
}
/**
* Getter $gender
* @return {string}
*/
public get $gender(): string {
return this.gender;
}
/**
* Getter $maritalStatus
* @return {string}
*/
public get $maritalStatus(): string {
return this.maritalStatus;
}
/**
* Getter $profession
* @return {string}
*/
public get $profession(): string {
return this.profession;
}
/**
* Getter $blood_Group
* @return {string}
*/
public get $blood_Group(): string {
return this.blood_Group;
}
/**
* Getter $available
* @return {string}
*/
public get $available(): string {
return this.available;
}
/**
* Setter $id
* @param {string} value
*/
public set $id(value: string) {
this.id = value;
}
/**
* Setter $userId
* @param {string} value
*/
public set $userId(value: string) {
this.userId = value;
}
/**
* Setter $name
* @param {string} value
*/
public set $name(value: string) {
this.name = value;
}
/**
* Setter $birthDate
* @param {string} value
*/
public set $birthDate(value: string) {
this.birthDate = value;
}
/**
* Setter $care_of
* @param {string} value
*/
public set $care_of(value: string) {
this.care_of = value;
}
/**
* Setter $gender
* @param {string} value
*/
public set $gender(value: string) {
this.gender = value;
}
/**
* Setter $maritalStatus
* @param {string} value
*/
public set $maritalStatus(value: string) {
this.maritalStatus = value;
}
/**
* Setter $profession
* @param {string} value
*/
public set $profession(value: string) {
this.profession = value;
}
/**
* Setter $blood_Group
* @param {string} value
*/
public set $blood_Group(value: string) {
this.blood_Group = value;
}
/**
* Setter $available
* @param {string} value
*/
public set $available(value: string) {
this.available = value;
}
/**
* Getter $religion
* @return {string}
*/
public get $religion(): string {
return this.religion;
}
/**
* Setter $religion
* @param {string} value
*/
public set $religion(value: string) {
this.religion = value;
}
/**
* Getter $email
* @return {string}
*/
public get $email(): string {
return this.email;
}
/**
* Setter $email
* @param {string} value
*/
public set $email(value: string) {
this.email = value;
}
}//class
Согласно насколько мне известно, эти две строки должны печатать значения:
console.log('\n\n name : ' + basic['name']);
console.log('\n\n $name : ' + basic.$name);
, тогда как эта console.log(basic);
печатает значения.