可观察不在离子2页标题中更新

时间:2017-07-07 18:35:41

标签: javascript typescript ionic2 observable

我的离子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函数,并且控制台记录数据。

0 个答案:

没有答案