Angular @HostBinding,简单示例和基础知识

Arc*_*ede 4 angular2-hostbinding angular

我会很好地理解 Angular @HostBinding 概念。不幸的是,我的书很好,但这个概念解释得不是很清楚。

请看代码:

@Component({
  selector: 'app-test-component',
  templateUrl: './test-component.component.html',
  styleUrls: ['./test-component.component.css']
})
export class TestComponentComponent implements OnInit {

  @Input() dataModel:AppModel;
  @HostBinding('attr.class') cssClass = 'alfa';

  constructor() { 

(...)
Run Code Online (Sandbox Code Playgroud)

我个人的解释:“主机绑定允许从组件本身(换句话说,从我下面提到的这个文件)中设置主机元素(在本例中为 app-test-component 标记)中的某些内容;在这种情况下,我将此标签的类属性设置为名为 cssClass 的变量并使用属性“alfa””。这是对的吗?

在这种情况下,如果我在相应的CSS文件中定义了“alfa”样式,为什么我在显示我的组件的页面中看不到这种样式(即背景颜色或其他颜色)?

编辑

我需要很好地理解这一行

@HostBinding('attr.class') cssClass = 'alfa';
Run Code Online (Sandbox Code Playgroud)

这是否完全等同于“将模板元素的 class 属性设置为分配给值'alfa'的字符串 cssClass”?(或者,换句话说,与主模板标签中的指令“class='alfa'”相同)

并且,您能给我写一个具有相同结果但不使用 @hostbinding 的示例吗?我相信比较这些等效的解决方案对我来说非常有帮助。

ara*_*b78 6

在 Angular 中,@HostBinding() 函数装饰器允许您从指令类设置宿主元素的属性。

假设您想要更改样式属性,例如高度、宽度、颜色、边距、边框等,或指令类中宿主元素的任何其他内部属性。在这里,您需要使用 @HostBinding() 装饰器函数来访问宿主元素上的这些属性,并在指令类中为其分配一个值。

@HostBinding() 装饰器采用一个参数,即我们要在指令中分配的主机元素属性的名称。

  • 是的,这是正确的,这里还有另一个例子: @HostBinding('style.border-color') borderColor: string; 和 this.borderColor = '粉红色'; (3认同)
  • 非常感谢。换句话说, @HostBinding('someProperty') someVariable = 'someValue'; 意思是:将 someProperty 的属性(显然在我有选择器的标签元素中)设置为 someVariable,我已将其分配给 someValue。IE:如果我想将宿主元素的 backColor 设置为红色,我应该编写 @HostBinding('style.color') color = 'red' 或 @HostBinding('style.color') color: string; 如果我想定义班级其他点的颜色。并且,所有内容都引用给定的选择器。正确的? (2认同)