OnDestroy vòng đời hook có sẵn trong các nhà cung cấp. Theo tài liệu:
Móc vòng đời được gọi khi một chỉ thị, đường ống hoặc dịch vụ bị phá hủy.
Đây là một ví dụ :
@Injectable()
class Service implements OnDestroy {
ngOnDestroy() {
console.log('Service destroy')
}
}
@Component({
selector: 'foo',
template: `foo`,
providers: [Service]
})
export class Foo implements OnDestroy {
constructor(service: Service) {}
ngOnDestroy() {
console.log('foo destroy')
}
}
@Component({
selector: 'my-app',
template: `<foo *ngIf="isFoo"></foo>`,
})
export class App {
isFoo = true;
constructor() {
setTimeout(() => {
this.isFoo = false;
}, 1000)
}
}
Lưu ý rằng trong đoạn mã trên Service
là một thể hiện thuộc về Foo
thành phần, vì vậy nó có thể bị hủy khi Foo
bị hủy.
Đối với các nhà cung cấp thuộc bộ cung cấp root, điều này sẽ xảy ra khi phá hủy ứng dụng, điều này rất hữu ích để tránh rò rỉ bộ nhớ với nhiều chuỗi khởi động, tức là trong các thử nghiệm.
Khi một nhà cung cấp từ bộ cung cấp gốc được đăng ký trong thành phần con, nó sẽ không bị hủy khi hủy thành phần, đây là trách nhiệm của thành phần để hủy đăng ký trong thành phần ngOnDestroy
(như một câu trả lời khác giải thích).
class Service implements OnDestroy
? Và bạn nghĩ gì khi điều này được gọi là nếu dịch vụ được cung cấp trên cấp module