2 回答
TA贡献2037条经验 获得超6个赞
您可以监视路由器事件,特别NavigationEnd是将当前路由分配给一个可观察对象,然后在组件中检查我们当前所在的路由。
服务:
import { Router, NavigationEnd } from "@angular/router";
import { filter, map } from "rxjs/operators";
currentRoute$: Observable<string>;
constructor(private router: Router) {
this.currentRoute$ = router.events.pipe(
filter(e => e instanceof NavigationEnd),
map((e: NavigationEnd) => e.url)
);
}
然后使用异步管道收听 observable 并进行检查
*ngIf="(myService.currentRoute$ | async) === '/login'"
您也可以或许用includes,如果你需要检查如果网址片段被包含在URL,然后你可以这样做:
*ngIf="(myService.currentRoute$ | async).includes('login')
TA贡献1847条经验 获得超7个赞
在订阅您的路线事件时,使用当前更新服务上的行为主题
section$ = new BehaviorSubject(null);
在你的路线子
sections$.next(section);
然后在您的组件中,您使用异步管道收听行为主题
section$ = this.service.section$;
并在模板中
<nav *ngIf="section$ | async as section">
<div *ngIf="section === 'navbar'">Something</div>
</nav>
每次行为主体发出时,section 变量都会神奇地更新。
添加回答
举报