在Angular 6中获取没有@ViewChild装饰器的view子元素

时间:2018-11-19 07:49:44

标签: angular

我有一个自定义组件的装饰器:

export const MyDecorator = () => {
  return (constructor: Function) => {
    constructor.prototype['ngAfterViewInit'] = function() {
      // I need to get component's view child here
    };      
  };
};

我需要在装饰器内部获取一个view子元素。在组件中,我可以使用@ViewChild装饰器获取该元素:

@MyDecorator()
@Component({
  selector: "app-my-component",
  templateUrl: "./my-component.html"
})
export class MyPage {
  @ViewChild(Content) content: Content;
}

如何在MyDecorator中获取内容元素?

1 个答案:

答案 0 :(得分:1)

在初始化之前无法引用组件的DOM。如果使用类装饰器,则无法对不存在的文档结构进行操作。我建议将这种逻辑转移到组件中。

通过属性装饰器,您可以将DOM元素作为参数传递。