所有
如果特定*ngIf
有组件,我想使用router-outlet
删除网页的某个部分。
我尝试搜索ActivatedRoute
和Router
,但我似乎无法弄明白。如何检查特定router-outlet
是否正在使用?
答案 0 :(得分:4)
可以这样解决:
<div [hidden]="!myOutlet.isActivated">
<router-outlet name="my-outlet" #myOutlet="outlet"></router-outlet>
</div>
无需更改组件类。
答案 1 :(得分:0)
我想出来了。您需要将事件用于路由器插座。但是,您无法使用ngIf
,因为除非插座位于dom中,否则不会触发事件。
<强> TS 强>
showOutlet: false;
onActivate(event : any) {
this.showOutlet = true;
}
onDeactivate(event : any) {
this.showOutlet = false;
}
<强> HTML 强>
<div [hidden]="!showOutlet">
<router-outlet name="my-outlet"
(activate)="onActivate($event)"
(deactivate)="onDeactivate($event)"></router-outlet>
</div>
答案 2 :(得分:0)
可以从Angular Router
获取此信息。
从@angular/core: 7.2.0
版开始。
html:
<router-outlet name="myOutlet"></router-outlet>
任何组件文件的ts :
export class MyComponent {
constructor(
router: Router
) {}
ngOnInit(): void {
const myOutletIsActive: Observable<boolean> = this.router.events.pipe(
filter((event: RouterEvent) => event instanceof NavigationEnd),
map(() => this.router.getCurrentNavigation()
.extractedUrl.root.children.primary.children.myOutlet !== undefined)
);
myOutletIsActive.subscribe(isActive => console.log('isActive', isActive));
}
}
优点是您可以从应用程序的每个组件中检索每个插座的状态。