Angular 2属性指令输入值未定义且未正确设置

糖尿病

我有以下指令(TextElementDirective),它具有4个输入变量colorHex,fontFamily,fontWeight,fontStyle。我想使用此指令设置元素的颜色和样式。

@Directive(
{
    selector: "[text-element-map]",
    // host: {
    //     '(mousemove)': "onMouseMove()"
    // }
}
)

export class TextElementDirective{
@Input() colorHex : string;
@Input() fontFamily : string;
@Input() fontWeight : string;
@Input() fontStyle : string;

constructor(private el: ElementRef){
    this.setElement();
}

setElement(){
    if(this.colorHex){
        this.el.nativeElement.style.color = this.colorHex;
    }
    if(this.fontFamily){
        this.el.nativeElement.style.fontFamily = this.fontFamily;
    }
    if(this.fontWeight){
        this.el.nativeElement.style.fontWeight = this.fontWeight;
    }
    if(this.fontStyle){
        this.el.nativeElement.style.fontStyle = this.fontStyle || "";
    }
}

onMouseMove(){
    this.setElement();
}
}

当我在另一个组件中使用此伪指令作为属性时,它不会设置元素的样式和颜色。即使单击按钮,也不会设置元素值。

如果我在指令中使用主机(onmousemove),它可以正常工作。但是我想在启动过程中设置值。

知道我想念什么吗?

这是使用它的测试组件。

@Component({
template:
`
    <h3>Test</h3>
    <div>
        <span>text-element-map: </span>
        <span class="text-content" text-element-map [colorHex]="colorHex" 
             [fontFamily]="fontFamily" [fontWeight]="fontWeight" [fontStyle]="fontStyle">Change this text</span>

        <button (click)="setCurrentDesignElement()">Click</button>
    </div>
`,
directives:[TextElementDirective],
changeDetection: ChangeDetectionStrategy.Default
})
export class TestComponent{

@ViewChild(TextElementDirective)
private childTextElement: TextElementDirective;


colorHex: string = "#e2e2e2";
fontFamily: string = "Arial";
fontWeight: string = "normal";
fontStyle: string = "normal";

setCurrentDesignElement(){
    this.color = {
        hex: "#B4B4B4",
        id: 5745,
        name: "Athletic Heather"
    };

    this.font = {
        cssString: "Valera Round",
        weight: "normal",
        style: "italic"
        };

    this.colorHex = "#B4B4B4";
    this.fontFamily = "Valera Round";
    this.fontWeight = "normal";
    this.fontStyle = "italic";    

    //this.childTextElement.setElement();
}


}
贡特·佐赫鲍尔(GünterZöchbauer)

Input()s在构造函数中不可用。它们由更改检测设置,并且在实例化组件后运行更改检测。变更检测更新输入后,将调用生命周期挂钩ngOnChanges(每次更新)和ngOnInit(第一次ngOnChanges调用后一次):

改变

constructor(private el: ElementRef){
    this.setElement();
}

constructor(private el: ElementRef) {};

ngOnInit() {
  this.setElement();
}

ngOnInit() 输入初始化后调用。


代替

this.el.nativeElement.style.color = this.colorHex;

最好用

@HostBinding('style.color')
@Input() colorHex : string;

@HostBinding('style.font-family')
@Input() fontFamily : string;

@HostBinding('style.font-weight')
@Input() fontWeight : string;

@HostBinding('style.font-style')
@Input() fontStyle : string;

其实我还没有尝试过自己添加@HostBinding(),并@Input()在相同的领域,但我不明白为什么它是行不通的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Angular2 - 输入值未定义

来自分类Dev

在 Angular 中设置单选按钮默认值 - TypeError:无法读取未定义的属性“x”

来自分类Dev

angular2:值未显示在视图中-未定义

来自分类Dev

angular2:值未显示在视图中-未定义

来自分类Dev

无法读取未定义的Angular CLI的属性“值”

来自分类Dev

Angular 6:TypeError:无法读取未定义的属性“值”

来自分类Dev

angular2指令“无法读取未定义的属性” subscribe”,带有输出元数据

来自分类Dev

Angular 2:错误类型错误:无法读取未定义的属性“值”

来自分类Dev

未捕获的ReferenceError:系统未定义-Angular2

来自分类Dev

错误错误:未捕获(承诺):类型错误:无法在 ionic 4 Angular 中设置未定义的属性“设备”

来自分类Dev

属性未定义的Angular2和TypeScript

来自分类Dev

Angular 2-组件属性在方法中未定义

来自分类Dev

无法读取未定义Angular 2的属性

来自分类Dev

Angular 2 form.value属性未定义

来自分类Dev

Angular 2 ngFor访问属性时未定义

来自分类Dev

Angular - Ionic 2 - 无法读取未定义的属性“订阅”

来自分类Dev

开头未定义Angular自定义样式指令值

来自分类Dev

Angular 2:ngFor 循环未定义值

来自分类Dev

Angular无法读取未定义的属性

来自分类Dev

如果对象在 angular 2 模板中未定义,那么检查对象属性的正确方法是什么?

来自分类Dev

Angular 2路由器错误:未捕获(承诺):TypeError:无法读取未定义的属性“ resolve”

来自分类Dev

Angular指令将ngmodel值从null更改为未定义的中断验证

来自分类Dev

如果服务器响应在 Angular 2 中未定义,则将变量设置为某个值

来自分类Dev

Angular2,TypeScript,如何将属性值读取/绑定到组件类(在ngOnInit中未定义)

来自分类Dev

Angular用密码输入抛出“ Uncaught TypeError:无法读取未定义的属性'charAt'”

来自分类Dev

Angular 7-错误错误:未捕获(承诺):TypeError:无法读取未定义的属性“ forEach”

来自分类Dev

Angular2-未定义OnInit

来自分类Dev

Angular2'this'未定义

来自分类Dev

Angular 2 ContentChild未定义

Related 相关文章

  1. 1

    Angular2 - 输入值未定义

  2. 2

    在 Angular 中设置单选按钮默认值 - TypeError:无法读取未定义的属性“x”

  3. 3

    angular2:值未显示在视图中-未定义

  4. 4

    angular2:值未显示在视图中-未定义

  5. 5

    无法读取未定义的Angular CLI的属性“值”

  6. 6

    Angular 6:TypeError:无法读取未定义的属性“值”

  7. 7

    angular2指令“无法读取未定义的属性” subscribe”,带有输出元数据

  8. 8

    Angular 2:错误类型错误:无法读取未定义的属性“值”

  9. 9

    未捕获的ReferenceError:系统未定义-Angular2

  10. 10

    错误错误:未捕获(承诺):类型错误:无法在 ionic 4 Angular 中设置未定义的属性“设备”

  11. 11

    属性未定义的Angular2和TypeScript

  12. 12

    Angular 2-组件属性在方法中未定义

  13. 13

    无法读取未定义Angular 2的属性

  14. 14

    Angular 2 form.value属性未定义

  15. 15

    Angular 2 ngFor访问属性时未定义

  16. 16

    Angular - Ionic 2 - 无法读取未定义的属性“订阅”

  17. 17

    开头未定义Angular自定义样式指令值

  18. 18

    Angular 2:ngFor 循环未定义值

  19. 19

    Angular无法读取未定义的属性

  20. 20

    如果对象在 angular 2 模板中未定义,那么检查对象属性的正确方法是什么?

  21. 21

    Angular 2路由器错误:未捕获(承诺):TypeError:无法读取未定义的属性“ resolve”

  22. 22

    Angular指令将ngmodel值从null更改为未定义的中断验证

  23. 23

    如果服务器响应在 Angular 2 中未定义,则将变量设置为某个值

  24. 24

    Angular2,TypeScript,如何将属性值读取/绑定到组件类(在ngOnInit中未定义)

  25. 25

    Angular用密码输入抛出“ Uncaught TypeError:无法读取未定义的属性'charAt'”

  26. 26

    Angular 7-错误错误:未捕获(承诺):TypeError:无法读取未定义的属性“ forEach”

  27. 27

    Angular2-未定义OnInit

  28. 28

    Angular2'this'未定义

  29. 29

    Angular 2 ContentChild未定义

热门标签

归档