我的离子2应用中没有正确更新显示页面的观察结果有点问题。我将介绍一个我想要做的非常简单的版本,但是没有用......
... PrivateChat.ts
import { Component, NgZone, ViewChild } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { SettingsProvider } from '../../providers/settings/settings';
import { ChatProvider } from '../../providers/chat/chat';
import { ChatMessage } from '../../models/chat-message';
import { User } from '@ionic/cloud-angular';
import { DataProvider } from '../../providers/data/data';
import { Subject } from 'rxjs/Subject';
import 'rxjs/add/operator/map';
import PouchDB from 'pouchdb';
@IonicPage()
@Component({
selector: 'page-private-chat',
templateUrl: 'private-chat.html'
})
export class PrivateChatPage {
chat_user = new Subject();
person: any;
user_id: any;
constructor(...) {
this.user_id = this.navParams.get('user_id');
this.getChatUser().subscribe(data => {
console.log("setting this.person to");
console.log(data);
this.person = data;
});
}
getChatUser() {
this.retrieveUser();
return this.chat_user;
}
retrieveUser() {
this.data.getUser(this.chat_user).then(data => {
this.chat_user.next(data);
});
}
}
超级简单,显然我省略了一些代码以节省时间和空间。然后我的html页面是......
<ion-header>
<ion-navbar>
<ion-title text-center>{{person?.details.username}}Chat</ion-title>
</ion-navbar>
</ion-header>
<ion-content #chat id="chat">
<ion-list no-lines>
<ion-item *ngFor="let message of messages">
<div class="animate-in-secondary">
<p><strong>{{message.from}}: </strong>{{message.message}}</p>
</div>
</ion-item>
</ion-list>
<ion-fab right bottom>
<button ion-fab color="dark">
<ion-icon name="arrow-dropup"></ion-icon>
</button>
</ion-fab>
</ion-content>
<ion-footer>
<ion-textarea [(ngModel)]="chatBox" fz-elastic type="text" placeholder="enter message..."></ion-textarea>
<button class="absolute-comment-button" ion-button icon-only small (click)="send(chatBox)">
<ion-icon name="chatbubbles"></ion-icon>
</button>
</ion-footer>
超级简单。然而,页面的标题永远不会更新。它总是只是说&#34;聊天&#34;我打开开发工具,我看到所有的控制台日志都完美地发生了。我得到了console.log(&#34;将this.person设置为&#34;);在控制台中使用正确的数据,所以我知道订阅事件正在触发并设置&#34; this.person&#34;到正确的数据。无论如何,页面总是只有#34; Chat&#34;的标题。任何人都可以看到为什么这不会更新标题?
如果有人好奇&#34; this.data.getUser(this.chat_user)......&#34;只是对我的服务器进行API调用,调用api.ionic.io/users/{{USER_ID}} API并返回正确返回的数据,因为我可以在控制台中看到它。
提前感谢您提供任何帮助,这没有任何意义,我无法弄清楚标题为什么不更新。谢谢。
P.S。如果你需要更多的代码请问,我会发布任何必要的东西来解决这个问题。谢谢。
更新:这是记录到控制台的数据......
setting this.person to
Object {
app_id:"REMOVED"
created:"2017-06-03T15:31:38Z"
custom:Object
details:Object
email:"REMOVED"
image:"REMOVED"
name:"REMOVED"
username:"REMOVED"
__proto__:Object
显然我删除了我无法显示的内容,但它确实显示正在调用subscribe函数,并且控制台记录数据。