【问题标题】:How to get elementRef without constructor injection? - Angular如何在没有构造函数注入的情况下获取 elementRef? - 角
【发布时间】:2020-08-25 18:21:34
【问题描述】:

我想知道是否有一种方法可以在 Angular 中不进行构造函数注入的情况下获取 ElementRef 实例?

我为什么需要它:

我有一个抽象的 BaseComponent 类,它被许多其他 Angular 组件类继承。我想避免通过super(elementRef) 调用在所有子类中注入ElementRef,而是将其直接注入BaseComponent 类中-

export abstract class BaseComponent {
   private elementRef: ElementRef;
   constructor() {   
      // Do we have some option like below?
     //  this.elementRef = Injector.get(ElementRef) 
   }
}

@Component({
  selector: 'app-comp-one',
  templateUrl: './comp-one.component.html',
  styleUrls: ['./comp-one.component.css']
})
export class CompOne extends BaseComponent {
    constructor() {  // constructor(elementRef: ElementRef)
      super();            // super(elementRef);  
     // here I can pass elementRef in super constructor call
     // but that's what I don't want to do
   }
}

【问题讨论】:

  • 您使用的是哪个 Angular 版本?
  • @yurzui 角度 7

标签: angular angular-dependency-injection


【解决方案1】:

我没有测试它,但我发现你的问题很有趣,所以我做了一些研究,我发现 this 解决了你想要解决的确切问题。

【讨论】:

  • 我认为该解决方案不适用于ElementRefElementRef 与特定的组件/指令相关联。您不能使用模块级注入器来获取该实例。您应该从 ElementInjector 获取它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-20
  • 1970-01-01
  • 1970-01-01
  • 2017-04-11
  • 2013-12-22
  • 2011-11-03
  • 1970-01-01
相关资源
最近更新 更多