指令里面的initial input value不起作用
来源:4-3 指令的概念(2)

archi979
2020-09-22
老师请问, 在grid-item-image.directive.ts这个文件里, 我跟着课程做, 一开始initial value是起作用的, 就是这两个值:
@Input() appGridItemImage = '2rem';
@Input() fitMode = 'cover';
后面在horizontal-grid.component.html里添加这两个属性, 再删掉后, initial value就不起做用了. 我的grid-item-image.directive.ts 代码如下:
import { Directive, ElementRef, Input, OnInit, Renderer2 } from '@angular/core';
@Directive({
selector: '[appGridItemImage]',
})
export class GridItemImageDirective implements OnInit {
@Input() appGridItemImage = '2rem';
@Input() fitMode = 'cover';
constructor(private elr: ElementRef, private rd2: Renderer2) {
console.log('constructor running');
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(): void {
console.log('OnInit running');
}
}
我发现这两次console都没有打印出来值, 说明constructor和OnInit一开始是并没有执行的. 这点我不太明白为什么. 如果在horizontal-grid.component.html里添加属性, console就会打印出来东西了. 请老师指点. 谢谢
写回答
1回答
-
指令本身就得依赖于组件才能器作用,否则指令怎么知道要应用到谁身上呢
012020-09-22
相似问题