Angular8 通过指令设置属性在Constructor中生效,在ngOnInit中无效

如题。
正常应该放在ngOnInit(){}中吧,ngOnInit应该是一个安全区域啊?可现在是无效。

学习的视频教程,这结果与讲师结论相反了

1.如下无效(在ngOnInit中):
`export class GridItemImageDirective implements OnInit {

@Input() appGridItemImage = '4rem';
@Input() fitMode = 'cover';

constructor(private elr: ElementRef, private rd2: Renderer2) {

}

ngOnInit(): void{
    this.rd2.setStyle(this.elr.nativeElement, 'grid-area', 'image');
    this.rd2.setStyle(this.elr.nativeElement, 'width', this.appGridItemImage);
    this.rd2.setStyle(this.elr.nativeElement, 'height', this.appGridItemImage);
    this.rd2.setStyle(this.elr.nativeElement, 'object-fit', this.fitMode);
}

}`

这样有效(在Constructor中):
`export class GridItemImageDirective implements OnInit {

@Input() appGridItemImage = '4rem';
@Input() fitMode = 'cover';

constructor(private elr: ElementRef, private rd2: Renderer2) {
    this.rd2.setStyle(this.elr.nativeElement, 'grid-area', 'image');
    this.rd2.setStyle(this.elr.nativeElement, 'width', this.appGridItemImage);
    this.rd2.setStyle(this.elr.nativeElement, 'height', this.appGridItemImage);
    this.rd2.setStyle(this.elr.nativeElement, 'object-fit', this.fitMode);

}
//指令在ngOnInit内设置属性,此时外部已经设置完毕
ngOnInit(): void{
}

}`

阅读 1.2k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进