我很新Angular 2我正在关注如何创建一个自定义指令的教程,我对它是如何工作的有些怀疑。Angular 2自定义指令的工作原理是什么?
我会尽力解释它做了什么。
我有一个包含这样的一个观点:
<div class="row">
<div class="col-xs-12">
<div
class="btn-group"
appDropDown
>
<button
type="button"
class="btn btn-primary dropdown-toggle">Manage Recipe <span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li><a href="#">To Shopping List</a></li>
<li><a href="#">Edit Recipe</a></li>
<li><a href="#">Delete Recipe</a></li>
</ul>
</div>
</div>
</div>
正如你可以看到有类此潜水BTN-组有我的自定义appDropDown设置好的上
<div
class="btn-group"
appDropDown
>
这一习俗指令只需在单击内部按钮时添加open类到此div(因此UL内容由BootStrap显示)。
这是我的自定义指令代码:
import {Directive, HostBinding, HostListener} from "@angular/core";
@Directive({
selector: '[appDropDown]'
})
export class DropDownDirective {
@HostBinding('class.open') isOpen = false;
// listen to a click event:
@HostListener('click') toggleOpen() {
this.isOpen = !this.isOpen;
}
}
从我可以undestood这个指令以这种方式工作:
1)这条线:
@HostBinding('class.open') isOpen = false;
约束isOpen变量的值为class.open div的属性,我的习惯m指令被应用。
所以它应该意味着如果这个潜水有开放类设置的值将是真实的,否则将是错误的。
这个解释是否正确?
2)这个方法:
// listen to a click event:
@HostListener('click') toggleOpen() {
this.isOpen = !this.isOpen;
}
当用户在视图中单击该按钮进行:
<button
type="button"
class="btn btn-primary dropdown-toggle">Manage Recipe <span class="caret"></span>
</button>
好了,现在是我的疑问:为什么这Methis Hotel酒店只有当我执行点击这个特定的按钮,而不是当我的网页中的任何其他按钮被点击?