【发布时间】:2017-05-27 11:00:13
【问题描述】:
我有以下 Angular 2 组件:
import { Component, Inject, Input } from '@angular/core';
@Component({
selector: 'generic-component',
templateUrl: 'generic-component.component.html',
styleUrls : ['generic-component.component.css']
})
export class GenericComponentComponent{
@Input() backCol: string = "#F0F8FF";
@Input() divClass: string = "myClass";
...
}
使用模板 html :
<div class={{divClass}} [style.backgroundColor]="backCol">
This is a div
</div>
当应用程序启动时,模板使用默认的 backCol 十六进制颜色变量正确呈现 div。
但我想在之后将 backCol 变量字符串更改为另一种十六进制颜色,可能是在一个事件中。
在父组件我有这样的东西:
@Component({
template: `
<generic-component divClass={{myComp.divClass}} [style.backgroundCol]="myComp.backCol">
</generic-component>
`
})
export class ParentComp{
myComp = new GenericComponentComponent();
}
onColorChange(){
this.myComp.divClass = "mySecondClass";
this.myComp.backCol = "#A22B11";
}
但是新颜色没有渲染 onColorChange() 调用。所有其他属性绑定(如 divClass)都已正确更新和呈现。我做错了什么?
【问题讨论】:
-
myComp应该是什么?this.backCol = "#A22B11"呢? -
它是 GenericComponentComponent 类的一个实例。我使用该实例将 GenericComponentComponent 渲染到父级的 html 模板中。
-
或许
this.instance.backCol = "#A22B11"那么呢?如果不是,请提供更多关于myComp是什么的信息(代码) -
编辑了我的问题。