【发布时间】:2018-08-06 18:52:21
【问题描述】:
我正在使用Angular 6。
我有一个数据类定义 JSON 对象参数并用作可观察对象
contact-list.component.ts
export class ContactListComponent implements OnInit {
contacts: Contact;
constructor(
private contactService: ContactService
) { }
ngOnInit() {
this.getContacts();
}
getContacts(): void {
this.contactService.getContacts().subscribe(
contacts => {
this.contacts = contacts;
}
);
}
}
contact.service.ts
export class ContactService {
private contactUrl = '/api/contacts/';
constructor(
private http: HttpClient,
) { }
getContacts(): Observable<Contact> {
const url = 'api_url' + this.contactUrl;
return this.http.get<Contact>(url)
.pipe(
catchError(this.handleError('getContacts', null))
);
}
}
contact.model.ts
export class Contact {
count: number;
next: boolean;
previous: boolean;
results: Array<ContactDetails>;
}
class ContactDetails {
id: string;
first_name: string;
last_name: string;
full_name: string;
private _gender: string;
private _avatar: string;
get gender(): string {
if (this._gender === 'm') {
return 'Male';
} else if (this._gender === 'f') {
return 'Female';
} else {
return '';
}
}
get avatar(): string {
if (this._avatar === null) {
console.log('null is');
return '../assets/img/bg5.jpg';
} else {
console.log('avatar');
return this._avatar;
}
}
}
在contact.model.ts文件的ContactDetails类中,gender()和avatar()有两个函数。
来自服务器的响应有 m 代表 male 和 f 代表 female 和 avatar 没有头像时字段为空。
我想在头像不存在时显示男性或女性作为性别头像默认头像。
contact-list.component.html
<div class="col-md-4" *ngFor="let contact of contacts.results">
<img src={{ contact.avatar }} />
<h2> {{ contact.full_name }}<h2>
<h4> {{ contact.gender }}</h4>
</div>
但是contact.gender 打印的是从服务器返回的值,而不是gender() 函数中指定的值。
如何修改模板中响应数据的内容?
【问题讨论】:
-
你得到了哪个结果?
-
就像在
gender的情况下,根据getter函数gender(),如果性别是m,它应该返回Male,但它在模板中给出m。 -
您是否尝试过在浏览器中调试该功能是否已执行?
-
我试过了,那个函数没有调用。