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