ルート用にラップする別のコンポーネントで使用するコンポーネントがあります。このコンポーネントは、バック親ルートへのナビゲーションをトリガー出力イベントがあります。ルータで使用されているコンポーネントの出力イベントで約束を解決できません
@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
}
])
私はHelloRouteComponent
負荷罰金/hello
ルートに行きます。戻るボタンをクリックすると、親ルートに移動します。しかし、コンソールに正常にナビゲートした後はコンソールに何も記録されません。
なぜ約束が解決されないのですか?これが機能するには何が欠けていますか?
デモ:https://stackblitz.com/edit/angular-rewax8?file=app%2Fapp.component.ts
迅速な対応をありがとう。このサービスがどのように機能するかを実証できますか? – elclanrs
コードを見てください。 :) –
私は参照してください...これは私のユースケースのために、ルートコンポーネントが私のコンポーネントを消費するユーザーによって作成され、私はそれ以上のコントロールを持っていないので、私は使用する必要はありませんサービスを挿入するなどの操作を行います。 – elclanrs