订阅仅在首次初始化后返回空数组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了订阅仅在首次初始化后返回空数组相关的知识,希望对你有一定的参考价值。
我有一个数组的订阅,应该在触发事件时重置,但是当事件被触发时,我的composent不是因为数组是空的。
我的代码看起来像这样
ngOnInit()
this.listUnstagedFilesSubscription = this.rightPanelService.listUnstagedFilesSubject.subscribe(
(listUnstagedFiles: any) =>
this.listUnstagedFiles = listUnstagedFiles;
this.setUnstageTree(listUnstagedFiles);
);
this.rightPanelService.emitListUnstagedFilesSubject();
setUnstageTree将使用'listUnstagedFiles'来填充另一个数组,然后用于显示我的组件。
问题是我不知道为什么它不起作用,因为组件总是在触发事件之前工作,如果我通过在某处调用函数ngOnInit()强制组件重新加载,它会再次起作用
这是调用订阅的代码
import Injectable from '@angular/core';
import Subject from 'rxjs';
@Injectable()
export class RightPanelService
isView: Boolean;
isViewSubject = new Subject<Boolean>();
listUnstagedFiles: any[];
listUnstagedFilesSubject: Subject<any[]>;
listStagedFiles: any[];
listStagedFilesSubject: Subject<any[]>;
commitHash: String;
commitHashSubject: Subject<String>;
constructor()
this.commitHashSubject = new Subject<String>();
this.isViewSubject = new Subject<Boolean>();
this.isView = true;
this.emitIsViewSubject();
this.listUnstagedFilesSubject = new Subject<any[]>();
this.listStagedFilesSubject = new Subject<any[]>();
emitIsViewSubject()
this.isViewSubject.next(this.isView);
emitListUnstagedFilesSubject()
this.listUnstagedFilesSubject.next(this.listUnstagedFiles);
emitListStagedFilesSubject()
this.listStagedFilesSubject.next(this.listStagedFiles);
setView(view: boolean)
this.isView = view;
this.emitIsViewSubject();
setListFileCommit(listUnstagedFiles: any[], listStagedFiles: any[])
this.listUnstagedFiles = listUnstagedFiles;
this.listStagedFiles = listStagedFiles;
this.emitListUnstagedFilesSubject();
this.emitListStagedFilesSubject();
emitCommitHashSubject()
this.commitHashSubject.next(this.commitHash);
setCommitHash(hash: String)
this.commitHash = hash;
this.emitCommitHashSubject();
答案
我找到了自己的问题的答案,我没有等待异步函数,我的变量没有设置为生成我的数组
以上是关于订阅仅在首次初始化后返回空数组的主要内容,如果未能解决你的问题,请参考以下文章