我订阅了一个observable,如果对象中的一个值为空,我需要提供一个默认值。问题是,当我实际拥有一个值时,它仍然采用默认值。请参阅下面我目前的方法:
在ngOnInit中使用setTimeout(我的理解是首先执行ngOnChanges,然后执行ngOnInit):
ngOnInit() {
setTimeout(() => {
this.checkEmptyDescription(this.ntData.description);//this method checks for an empty this.ntData.description
}, 0);
}
ngOnChanges :
ngOnChanges(changes: SimpleChanges) {
this.loadData();
}
private checkEmptyDescription(notes: string) {
if (notes === null || notes === undefined || notes.trim() === '') {
this.editedDescription = this.defaultDescription;
}
else {
this.editedDescription = this.ntData.description;
}
}
protected loadData() {
this._ntDataStr.getNoteData(this.id).subscribe(data => {
this.ntData= data;
});
}
更新
这是我使用的另一种方法:
protected loadData() {
this._ntDataStr.getNoteData(this.id).subscribe(data => {
this.ntData= data;
this.editedDescription = this.ntData.description || this.defaultDescription ;
});
}