J'ai deux méthodes, une valeur de poussée et l'autre fait une patteValue, j'ai besoin de la valeur de poussée à finaliser de manière à ce que la méthode de la valeur de correctif puisse fonctionner correctement. Je les appelle tous les deux dans un NgafterViewInit, j'aimerais connaître un moyen de le faire sans appeler la méthode de la valeur du patch à l'intérieur de la méthode de la valeur de poussée.
Les deux méthodes sont appelées ici p> Méthode PatchValue: P> private inicializarListaGrupoAnaliseCae(): void {
this.grupoAnaliseCaeService
.findAll()
.subscribe(res => {
res.forEach((grupoAnaliseCae: GrupoAnaliseCae) => {
if(grupoAnaliseCae.nuNivelGrupo==null){
this.listaGrupoAnaliseCae.push({ label: grupoAnaliseCae.noGrupoAnaliseCae, value: grupoAnaliseCae });
this.formataNomeGrupo();
}
});
});
}
4 Réponses :
Essayez de convertir l'observable en une promesse, comme: alors attendez cette promesse dans ici est une illustration de Stackblitz. P> < / p> ngafterviewinit code> Comme: p>
Une fois que vous avez introduit un seul point de paradigme réactif (l'abonnement ici) dans votre programme, toutes les déclarations suivantes dépendantes devraient également être réactives. La solution la plus rapide de votre scénario serait d'appeler la fonction dépendante à l'intérieur de l'abonnement.
ngAfterViewInit(): void {
this.inicializarListaGrupoAnaliseCae();
this.cdr.detectChanges();
}
private inicializarListaGrupoAnaliseCae(): void {
this.grupoAnaliseCaeService
.findAll()
.subscribe(res => {
res.forEach((grupoAnaliseCae: GrupoAnaliseCae) => {
if (grupoAnaliseCae.nuNivelGrupo == null) {
this.listaGrupoAnaliseCae.push({
label: grupoAnaliseCae.noGrupoAnaliseCae,
value: grupoAnaliseCae
});
this.formataNomeGrupo();
}
});
this.inicializarListaGrupoAnaliseCae(); // <-- call function here
});
}
Je suppose que vos valeurs initiales (pushvalues) provenaient d'un service HTTP qui peut prendre un certain temps pour résoudre. Vous recherchez essentiellement un état ici, ce qui signifie que vous devez connaître l'état du formulaire avant de corriger le correctif. Si tel est le cas, vous pouvez utiliser un comportemortosubject code> ou juste une variable normale pour suivre l'état si le formulaire est prêt à être corrigé ou non. iniciarDadosVisualizar() {
if(this.isFormInitialized && this.isVisualizando || this.isEdit){
... // other logic
};
La première méthode est asynchrone et ne retourne rien qui est le problème. Au lieu de vous abonner à l'intérieur de cette méthode, vous devez retourner l'observable. Ensuite, dans Je ne sais pas si vous devez retourner quelque chose dans votre observable pour l'autre, donc La nouvelle méthode de la nouvelle push p> nouveau NgAfterViewInit P> NgAfterViewInit Code> Vous pouvez y souscrire et appeler la 2e méthode lorsqu'il est terminé. Observable ngAfterViewInit(): void {
this.inicializarListaGrupoAnaliseCae().subscribe(() => {
this.iniciarDadosVisualizar();
//this.iniciarSituacaoCadastro();
this.cdr.detectChanges();
});
}