Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ionic 2:如果您关闭视图,如何重新实例化@ViewChild?_Javascript_Angular_Ionic2_Angular2 Template - Fatal编程技术网

Javascript Ionic 2:如果您关闭视图,如何重新实例化@ViewChild?

Javascript Ionic 2:如果您关闭视图,如何重新实例化@ViewChild?,javascript,angular,ionic2,angular2-template,Javascript,Angular,Ionic2,Angular2 Template,我正在创建一个聊天体验,页面通过使用scrollToBottom方法从ionic上的内容跟上对话。如果我从“PreChat.html”开始并转到“Chat.html”,那么我会取消“Chat.html”返回到“PreChat.html”,然后再次返回到“Chat.html”,我会得到以下错误:“无法读取null的属性'scrollToBottom'。该体验应能在任何时间或重复进行 PreChat.html: <ion-content> <button (click)="go

我正在创建一个聊天体验,页面通过使用scrollToBottom方法从ionic上的内容跟上对话。如果我从“PreChat.html”开始并转到“Chat.html”,那么我会取消“Chat.html”返回到“PreChat.html”,然后再次返回到“Chat.html”,我会得到以下错误:“无法读取null的属性'scrollToBottom'。该体验应能在任何时间或重复进行

PreChat.html:

<ion-content>
  <button (click)="goToChat()" href="#">
    Chat
  </button>
</ion-content>
<ion-content>
  <button ion-button="filter-button"(click)="dismiss()">
    <ion-icon name="close"></ion-icon>
  </button>
  <div *ngFor="let convo of conversationArray">
    <div class="b-text">{{convo.speak}}</div>
  </div>
</ion-content>
Chat.html:

<ion-content>
  <button (click)="goToChat()" href="#">
    Chat
  </button>
</ion-content>
<ion-content>
  <button ion-button="filter-button"(click)="dismiss()">
    <ion-icon name="close"></ion-icon>
  </button>
  <div *ngFor="let convo of conversationArray">
    <div class="b-text">{{convo.speak}}</div>
  </div>
</ion-content>

为此,必须使用
ionViewDidEnter
page事件,而不是
constructor

当页面完全进入并且现在是活动页面时运行。这 事件将激发,无论它是第一次加载还是缓存的页面


请尝试以下操作:

this.content = this.ViewCtrl.getContent();

谢谢你的建议,但没用。使用IonViewDiCenter时是否遗漏了一个步骤或细节?我不太熟悉这个生命周期钩子。可能与Chat.ts和Chat.html是模态有关吗?嗯。。。这是关于生命周期挂钩的文档:我认为这个问题与@ViewChild有关。它需要重新测试,但现在还没有。对这种细微差别有什么想法吗?当你对
内容进行调试时,它显示了什么?你如何对内容进行调试?目前,我获取的内容为空。html中是否提供了名为“content”的id?需要使用
#content
引用它,然后您可以尝试
this.content.nativeElement.scrolltobttom()
,因为它是您所引用的本机元素。有关更多详细信息,请查看:@Deepak,当内容具体指代时,为什么我需要id?经过多次搜索,似乎有一种方法可以通过ViewChild在组件之间传递数据,但这种方法在使用离子/角度内容的环境中并不适用。话虽如此,我的目的是创建一个基于聊天的底部滚动条,如爱奥尼亚文档中所示。这是许多代码除了bug和不一致性之外一无所获的方式。此链接提供了更清晰的解决方案:
this.content = this.ViewCtrl.getContent();