【发布时间】:2019-08-29 21:28:40
【问题描述】:
HelloComponent 获得一个SampleService 实例,定义一个服务提供者。
当HelloCompoment被破坏时,我不明白为什么SampleService会幸存下来。
如果HelloComponent 按类型获得SampleService 实例(避免ServiceProvider),则不会出现问题。
sample-service.ts
@Injectable()
export class SampleService implements OnDestroy{
constructor(){
console.log('created new sample service');
}
ngOnDestroy(){
console.log('destroyed sample service');
}
}
hello-component.ts
import { Component, OnInit, OnDestroy } from '@angular/core'
import { SampleService } from '../service/sample.service'
let ServiceFactory = () => {
console.log('Providing new SampleService');
return new SampleService();
};
let ServiceProvider = {
provide: SampleService,
useFactory: ServiceFactory
};
@Component({
selector: 'hello',
templateUrl: './hello.component.html',
providers: [ServiceProvider]
})
export class HelloComponent implements OnInit, OnDestroy {
constructor(private sampleService: SampleService){}
ngOnInit(){
console.log("Hello component created!")
}
ngOnDestroy(){
console.log("Hello component destroyed!")
}
}
这里是堆栈闪电战:https://stackblitz.com/edit/angular-vkhmma (点击toggleHello并查看控制台日志)
如何在组件结束时强制销毁服务?
【问题讨论】:
-
抱歉,在您的链接中,我没有找到任何关于销毁工厂创建的服务的信息
标签: angular