Я пытаюсь поэкспериментировать с Angular 5
и Firebase
(используя angularfire2
) и пытаюсь наблюдать поведение async
трубы.
Было указано, что всякий раз, когда мы присоединяем async
трубу к observable
, она автоматически unsubscribe
будет подписываться, когда компонент будет уничтожен (т.е. ngOnDestroy()
).
Однако , когда я присоединяю async
pipe к FirebaseDatabase , см. Код ниже
// This is 'app.component.ts'
import { Component, OnInit, OnDestroy } from '@angular/core';
import { AngularFireDatabase } from 'angularfire2/database';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit, OnDestroy {
$mycourses;
constructor(private firebaseDB: AngularFireDatabase) {
}
ngOnInit() {
this.$mycourses = this.firebaseDB.list('courses').valueChanges();
}
ngOnDestroy() {
console.log('Component Destroyed');
}
}
, а
// This is 'app.component.html'
<h1>My Current Courses:</h1>
<ul>
<li *ngFor="let course of $mycourses | async">
<p class="course">{{ course.COURSE }}</p>
<span class="course-code"> - {{ course.COURSE_CODE }}</span>
<span class="au"> - {{ course.AU }}</span>
</li>
</ul>
<button (click)="ngOnDestroy()">Destroy Component</button>
ожидаемое поведение не происходило , т.е. после нажатия кнопки Destroy Component
, всякий раз, когда я изменяю list
и object
на консоли Firebase, мой компонент по-прежнему немедленно отражает изменения в базе данных, в то время как предполагалось, что изменения не будут отражены.
Что я здесь не так делаю?