离开页面时丢失列表值
Lose the list values when navigating away from page
所以我将 IItineraries 列表存储在我在 ngOnInit 上分配的私有变量中,如下所示:
ngOnInit() {
this.loggedInUser = firebase.auth().currentUser;
this.dataSvc.getItineraries().subscribe(res => {
this.itineraries = res;
});
console.log('logged in user add itin page', this.itineraries);
}
<ion-list>
<div *ngFor="let itinerary of itineraries">
<ion-card class="itinerary-module">
<ion-card-content>
<div>
<h2>{{itinerary.startDate | date: "MM/dd/yyyy"}} - {{itinerary.endDate | date: "MM/dd/yyyy"}}</h2>
</div>
<div>
<h1>{{itinerary.destination}}</h1>
</div>
<div>
<h2>{{itinerary.tripDetails}}</h2>
</div>
<div class="chip" *ngFor="let activity of itinerary.activities">
<label> {{ activity }} </label>
</div>
</ion-card-content>
</ion-card>
</div>
</ion-list>
在初始页面加载时没问题...显示了值,但是当我离开页面然后返回时它是空白的,并且在我关闭并重新打开应用程序之前不会显示值。
我怀疑您处于冷 Subject Observable 启动但 "not cooling down" 的情况,即没有完成,也没有发出新值。
在您的情况下,这意味着当您导航回您的页面时,您的 getItineraries()
服务方法新调用很可能会为您提供与第一次相同的 Observable 引用。它已经开始发射,因为你是第一次订阅它。
但是现在您不会对 itineraries
组件进行任何赋值 属性,直到 Observable 发出一个新值,这可能永远不会发生,具体取决于它在内部所做的事情。
在那种情况下,您有许多可能的解决方案:尝试在组件被销毁时适当地取消订阅,将您的 Observable 重做为行为主题...
如果你只在你的模板中使用它,你也可以直接用异步管道调用它。组件销毁时模板会自动退订
所以我将 IItineraries 列表存储在我在 ngOnInit 上分配的私有变量中,如下所示:
ngOnInit() {
this.loggedInUser = firebase.auth().currentUser;
this.dataSvc.getItineraries().subscribe(res => {
this.itineraries = res;
});
console.log('logged in user add itin page', this.itineraries);
}
<ion-list>
<div *ngFor="let itinerary of itineraries">
<ion-card class="itinerary-module">
<ion-card-content>
<div>
<h2>{{itinerary.startDate | date: "MM/dd/yyyy"}} - {{itinerary.endDate | date: "MM/dd/yyyy"}}</h2>
</div>
<div>
<h1>{{itinerary.destination}}</h1>
</div>
<div>
<h2>{{itinerary.tripDetails}}</h2>
</div>
<div class="chip" *ngFor="let activity of itinerary.activities">
<label> {{ activity }} </label>
</div>
</ion-card-content>
</ion-card>
</div>
</ion-list>
在初始页面加载时没问题...显示了值,但是当我离开页面然后返回时它是空白的,并且在我关闭并重新打开应用程序之前不会显示值。
我怀疑您处于冷 Subject Observable 启动但 "not cooling down" 的情况,即没有完成,也没有发出新值。
在您的情况下,这意味着当您导航回您的页面时,您的 getItineraries()
服务方法新调用很可能会为您提供与第一次相同的 Observable 引用。它已经开始发射,因为你是第一次订阅它。
但是现在您不会对 itineraries
组件进行任何赋值 属性,直到 Observable 发出一个新值,这可能永远不会发生,具体取决于它在内部所做的事情。
在那种情况下,您有许多可能的解决方案:尝试在组件被销毁时适当地取消订阅,将您的 Observable 重做为行为主题...
如果你只在你的模板中使用它,你也可以直接用异步管道调用它。组件销毁时模板会自动退订