我有一个组件可用于包装路由的另一个组件。该组件触发导航回父路由的输出事件:无法解析在路由器中使用的组件中的输出事件中的承诺
@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);
});
}
}
接下来,我创建包装组件在路由中使用:
@Component({
template: `
<hello (helloBack)="onBack()">
<h1>Hello World!</h1>
</hello>
`
})
export class HelloRouteComponent {
onBack() {
console.log('back!!!');
}
}
最后,我在路由加载此模块:
RouterModule.forRoot([
{
path: 'hello',
component: HelloRouteComponent
}
])
当我去/hello
路线HelloRouteComponent
加载罚款。当我点击后退按钮时,它将导航到父路由,但是在成功导航到该路由后,它不会将任何内容记录到控制台。
为什么不解决承诺?我错过了什么工作?
演示:https://stackblitz.com/edit/angular-rewax8?file=app%2Fapp.component.ts
感谢您的快速响应。你能证明这项服务的工作原理吗? – elclanrs
看看代码。 :) –
我看到...不确定这将适用于我的用例,因为路由组件是由使用我的组件的用户创建的,并且我无法控制该组件,并且我不希望用户拥有注入服务等等。 – elclanrs