我試圖在頁面打開時執行函式。我有打字稿代碼:
export class MyReservationsPage implements OnInit {
user: any;
userId: string;
storedData: any = [];
constructor(private auth: AuthService, private afs: AngularFirestore) {}
ngOnInit() {
this.fetchBookings();
}
fetchBookings() {
this.afs
.collection('user')
.doc(this.userId)
.collection('BookingHistory')
.get()
.subscribe((querySnapshot) => {
this.storedData = querySnapshot.docs.map((e) => {
return {
bookingDate: e.data()['Merge'],
};
});
});
}
}
和 HTML:
<ion-content>
<ion-grid>
<row *ngFor="let data of storedData">
<ion-col *ngFor="let value of data.bookingDate">
<ion-row>{{value.Date}}</ion-row>
<ion-row>{{value.Time}}</ion-row>
<ion-row>{{value.BookedAt.toDate() | date:'medium'}}</ion-row>
</ion-col>
</row>
</ion-grid>
</ion-content>
我真的不知道如何ngOnInit作業,但是如何在不單擊按鈕的情況下自動執行功能?
uj5u.com熱心網友回復:
在ngOnInit不觸發每次:
在默認更改檢測器第一次檢查指令的資料系結屬性之后立即呼叫的回呼方法,并且在檢查任何視圖或內容子項之前。它僅在指令實體化時呼叫一次。
來源:Angular 檔案
如果您想在每次視圖加載時呼叫該函式,最好使用此處詳述的 Ionic 生命周期事件。
所以在你的情況下,你可以使用類似的東西:
export class MyReservationsPage {
user: any;
userId: string;
storedData: any = [];
constructor(
private auth: AuthService,
private afs: AngularFirestore
) {}
ionViewDidEnter() {
this.fetchbookings();
}
fetchBookings() {
this.afs
.collection('user')
.doc(this.userId)
.collection('BookingHistory')
.get()
.subscribe((querySnapshot) => {
this.storedData = querySnapshot.docs.map((e) => {
return {
bookingDate: e.data()['Merge'],
};
});
});
}
}
這將fetchBookings()在視圖加載后呼叫您的方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/373201.html
標籤:javascript html 有角的 离子框架
