Angular - 查明派生 class 是否实现了抽象 class (router.component)

Angular - find out if derived class implements an abstract class (router.component)

我正在尝试使用 router.component 设置页面标题。所以,我创建了一个摘要 class,它必须提供标题:

export abstract class ComponentWithTitleBase {
  abstract get title(): Observable<string>;
}

然后实现它的组件如下所示:

export class AboutComponent extends ComponentWithTitleBase implements OnInit {
  get title(): Observable<string> {
    return of("About the demo");
  }

  ngOnInit(): void {}
}

现在我只需要将它用于路由器事件。我订阅并查看 router.component 是否为 ComponentWithTitleBase,所以:

    this.router.events
      .pipe(
        // identify navigation end
        filter((event) => event instanceof NavigationEnd),
        // now query the activated route
        map(() => this.rootRoute(this.route)),
        filter((route) => !!route.component),
        tap((route: ActivatedRoute) =>
          console.log(route.component instanceof ComponentWithTitleBase)
        ),
...

但无论我做什么,输出都是 false。有什么方法可以让我知道某些 class 是否实现了另一个 abstract class?

instanceof 不适用于摘要 class,

route.component instanceof ComponentWithTitleBase替换为 ComponentWithTitleBase.isPrototypeOf(route.component)