指令里面的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回答

接灰的电子产品

2020-09-22

指令本身就得依赖于组件才能器作用,否则指令怎么知道要应用到谁身上呢

0
1
archi979
哦我明白了, 我应该在组件中引用这个名字: 这样就可以了, 谢谢老师!
2020-09-22
共1条回复

Angular 开发拼多多webapp 从基础到项目实战

高仿拼多多WebApp,带你在实战环境中学习Angular

1317 学习 · 451 问题

查看课程