angular - 页面离开时角度服务破坏
问题描述
我有一项服务,TransactionsProvider
它包含在页面模块中:
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
SharedModule,
],
declarations: [
ClientDetailPage,
],
providers: [
TransactionsProvider,
],
exports: [
]
})
export class ClientDetailPageModule {}
然而,我的TransactionsProvider
工具在被破坏OnDestroy
时似乎并没有ClientDetailPage
被破坏。
@Injectable()
export class TransactionsProvider implements OnDestroy {
base_url: string;
auth_token: string;
purchased_weeks = new BehaviorSubject(<number>0);
purchased_weeks$ = this.purchased_weeks.asObservable()
purchases$: Observable<ITransaction[]>;
payments$: Observable<ITransaction[]>;
constructor(private globalVarService: GlobalsService,
private commentsService: CommentsProvider,
private http: HttpClient ) {
this.base_url = this.globalVarService.base_url;
}
ngOnDestroy(): void {
console.log("destroy txn service")
}
...
}
我从来没有destroy txn service
在控制台中看到过,所以我认为服务没有被破坏。当页面被破坏时,我需要做什么才能使我的服务被破坏?
解决方案
它取决于依赖注入。对于服务,您在所有应用程序的所有模块 o 中使用相同的实例(如果您在根目录中使用提供)。要仅为您的组件使用服务实例,您必须将其声明为组件的提供者。你可以这样做:
@Component({
selector: 'app-selector',
templateUrl: './my-app.component.html',
styleUrls: ['./my-app.component.css'],
providers: [TransactionsProvider]
})
推荐阅读
- c++ - 实现复制赋值运算符的正确方法
- ios - 当单元格可见时在轮播中播放视频
- javascript - 异步加载 Chart.js 工具提示信息
- javascript - 如何使用 QWebEngineView 通过 id 获取页面元素
- c# - Unity(对象引用未设置为对象的实例)错误 *C#*
- angular - Angular ServiceWorker 返回响应 404 Not Found 并启用输出散列
- python - 如何将文件夹中的多个文件打包成一个二进制文件并获取每个文件的偏移量?
- sql - 如果我的通话记录表中的通话时间不在另一个表的打卡时间和打卡时间字段之外,我如何计算它的总和?
- c# - 在运行其他方法时永远运行一个方法
- python - 积极的后向正则表达式与预期不匹配