获取 Angular 2 路由器中当前路由组件的引用?

2023-11-25

有没有一种干净的方法来获取当前路由组件的引用?

这似乎有效,但看起来很老套:

 this.router.currentInstruction.
  component.componentType.prototype.somePropertyOrFunction();

事实上,您无权使用表达式访问与当前路由关联的组件实例。您只能获取组件类型。这就是为什么您需要使用原型,但您获得对函数的引用,而不是对组件实例的方法的引用。

主要后果将是this关键字(如果在方法中使用)将是未定义的。

要访问与当前路由关联的组件实例,您可以利用OnActivate钩子接口,用于在路由激活时将此实例设置为共享服务:

@Component({
  selector: 'some-cmp',
  template: `
    <div>routerOnActivate: {{log}}</div>
  `})
  export class SomeCmp implements OnActivate {
    constructor(private service:RouteStateService) {
    }

    routerOnActivate(next: ComponentInstruction, prev: ComponentInstruction) {
      this.service.setCurrentRouteComponent(this);
    }
 }

然后您就可以通过以下方式访问组件实例:

var component = this.service.getCurrentRouteComponent();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取 Angular 2 路由器中当前路由组件的引用? 的相关文章

  • 基于角色在同一路径上延迟加载模块

    我正在尝试根据我的角色加载 Angular 模块 当我登录时 我用 Angular Guard 尝试过 但这不起作用 当它失败时 它不会转到下一条路线 const routes Routes path loadChildren gt Aut
  • asp.net 核心、角度 2、PrimeNG

    I use aspnetcore spa 模板 https www npmjs com package generator aspnetcore spa作为创建管理面板的起点 接下来我添加PrimeNG http www primeface
  • Angular2:类型错误:无法读取未定义的属性“Symbol(Symbol.iterator)”

    我是可观察对象的新手 正在尝试 Christoph Burgdorf 的基本自动完成变体Angular2 博客中的可观察量 http blog thoughtram io angular 2016 01 07 taking advantag
  • 在 MatDialog Content Angular 7 中添加新行

    我正在使用 MatDialog 并尝试在内容定义中添加新行 两个都 n and 没有这样做 有没有另一种方法无需手动进入 html 并更改它 因为它是可重用的组件 var status MatDialogRef
  • 更改 mat-form-field 中的边框颜色

    我正在使用有角度的材料mat form field 我有深色背景 因此尝试将表单字段的边框更改为白色 但我无法使用 css 来实现它 不 无论我在 css 中进行什么更改 它们都不会反映到mat form field 这是我的代码的链接 S
  • angular2 使用 router.subscribe 来观察 url 变化

    我在用着router event subscribe angular router观察 url 变化以执行if虽然声明event subscribe工作正常 但我的问题是我怎样才能避免重复我的if声明只是为了在这些网址上显示标题 这可能是别
  • 在 Angular 2 中添加 polyfill 代码

    如何在 Angular 2 cli 项目中添加 polyfill 的代码 例如 我想使用以下来自的polyfillMozilla MDN https developer mozilla org en US docs Web JavaScri
  • Asp.net core webapi获取从Angular4应用程序发布的空值

    我是新来的Angular4在快速交付内容的情况下 所以没有时间彻底学习它 所以如果我的问题看起来很幼稚 请原谅 From my Asp Net Web API I have Confirmemail API必须从 Angular4 应用程序
  • Angular 2 错误:无法解析“RouteParams”的所有参数

    尝试使用 RouteParams 获取查询字符串参数 但我只是收到错误 无法解析 RouteParams 的所有参数 确保所有 参数用 Inject 修饰或具有有效类型 注释并且 RouteParams 用 Injectable 修饰 an
  • 方法与管道

    在 Angular 应用程序中的模板插值中使用管道和方法有区别吗 例如 h1 name toLowerCase h1 vs h1 name lowercase h1 就性能而言 是有真正的收获还是只是个人喜好 我知道调用模板中的方法通常会降
  • Ionic 4:硬件后退按钮重新加载应用程序

    从事项目并陷入问题 硬件后退按钮重新加载应用程序 我在此应用程序中使用 Angular Router 我退出应用程序的代码 ionViewDidEnter this subscription this platform backButton
  • Angular 4 触发自定义事件 - EventEmitter 与dispatchEvent()

    我正在构建指令 该指令应该在元素进入视口时添加类 并且还将触发自定义事件 我找到了两种触发事件的方法 EventEmitterand dispatchEvent 两者都工作正常 在这种情况下应该使用哪个 为什么 对代码的任何其他建议表示赞赏
  • Angular 6 - 将事件处理程序添加到动态创建的 html 元素

    我想将点击事件附加到动态创建的 html 元素 单击事件应该能够触发组件中的另一个方法 我已经浏览过其他建议使用 ElementRef 附加事件的答案 但是 它不适用于我的情况 我正在使用 mapQuest API 来渲染地图 地图将绘制地
  • 角度材质表-表内边框

    I am using Angular material table and I want to set border inside the table Using CSS I was able to set border Normal ca
  • 为 Angular 2 配置history.pushState

    我的 Angular 2 应用程序使用默认值HTML 5 history pushState https developer mozilla org en US docs Web API History API Adding and mod
  • Angular SlickGrid 对齐标题文本

    我正在使用角度SlickGrid并希望将列标题中的文本居中或右对齐 并非所有列都以相同的方式 我发现 有一个headerCssClass列定义中的属性 但我一直尝试 这种样式似乎从未被应用 对于列定义 id sourceNumber nam
  • Angular 4 Http POST 不起作用

    我希望每个人都做得很好 我最近开始使用 Angular 4 4 我一直在尝试将数据发布到我的 api 服务器 但不幸的是它不起作用 我花了大约两天的时间 但仍然没有成功 甚至已经尝试过 6 7 篇文章角 io https angular i
  • Angular 7 routerLink 指令警告“导航在 Angular 区域外触发”

    我正在努力使用 Angular 框架来让我的应用程序顺利运行 但我无法解决路由问题 我有顶级水平AppComponent and app routing module ts通过我的自定义管理导航SlideMenuComponent 我的简化
  • Angular 7 CLI 生成的项目抛出“ERROR in multi ./src/styles.sass”

    我使用生成了一个新的 Angular 项目ng new dragonfly具有以下参数 角 v7 2Angular CLI v 7 3NPM 6 7 0Windows 10 我选择包含路由和 SCSS 当我尝试使用启动项目时npm star
  • 如何让 webpack 和 iis express 协同工作?

    I have Angular 2 和 Webpack 2 入门 https github com qdouble angular webpack2 starter它通过 webpack dev server 在节点上运行 我如何使用 web

随机推荐