J'ai un composant qui est destiné à être utilisé dans un autre composant qui l'enveloppe pour l'itinéraire. Ce composant a un événement de sortie qui déclenche la navigation retour vers la route parent:ne peut pas résoudre la promesse en cas de sortie pour le composant utilisé dans le routeur
@Component({
selector: 'hello',
template: `
<ng-content></ng-content>
<button (click)="back($event)">Back</button>
`
})
export class HelloComponent {
@Output() helloBack = new EventEmitter();
constructor(private router: Router,
private route: ActivatedRoute) {
}
back($event) {
this.router.navigate(['./'], { relativeTo: this.route.parent })
.then(() => {
this.helloBack.emit($event);
});
}
}
Ensuite, je crée le composant wrapper à utiliser dans la route:
@Component({
template: `
<hello (helloBack)="onBack()">
<h1>Hello World!</h1>
</hello>
`
})
export class HelloRouteComponent {
onBack() {
console.log('back!!!');
}
}
Enfin, je charge cela dans le routage Module:
RouterModule.forRoot([
{
path: 'hello',
component: HelloRouteComponent
}
])
Quand je vais à la route /hello
les charges HelloRouteComponent
bien. Lorsque je clique sur le bouton de retour, il accède à la route mère, mais il ne se connecte pas quoi que ce soit à la console après avoir navigué avec succès là-bas.
Pourquoi ne pas la promesse résoudre? Qu'est-ce qui me manque pour que ça marche?
Démo:https://stackblitz.com/edit/angular-rewax8?file=app%2Fapp.component.ts
Merci pour la réponse rapide. Pouvez-vous démontrer comment ce service fonctionnerait? – elclanrs
Regardez le code. :) –
Je vois ... Pas sûr que cela fonctionnera pour mon cas d'utilisation, parce que le composant route est créé par l'utilisateur qui consomme mon composant, et je n'ai aucun contrôle sur cela, et je ne veux pas que l'utilisateur ait pour injecter un service, et ainsi de suite. – elclanrs