昨天,我们看到了使用指令而不是组件可以提高代码的可重用性不要将我们的代码逻辑绑定到特定的HTML模板。
现在,如果我们想一劳永逸地编写一些代码,并使其适用于应用程序中所有符合某些特定条件的HTML元素,我们还有另一个未充分使用的工具:CSS选择器。
例如,假设我们想要isActive
指令从之前的例子应用于应用程序中的所有按钮。当然,我们可以手动查找所有按钮并添加isActive
但这将是乏味且容易出错的。
或者我们可以更有想象力,改变该指令的选择器,使其应用于所有按钮和任何其他具有isActive
属性:

通过该实现,所有当前(和未来)按钮都将应用该指令。但是如果我们想要做出任何例外并禁用某些按钮上的指令呢?我们可以这样做:

然后我们只需要加上disableIsActive
属性设置为那些不需要isActive
指令:

我的观点是有一些创造性的用例CSS选择器,这些选择器与用于CSS样式化的选择器相同,这意味着我们可以依赖于类、属性、元素名称或以上任何组合!
Angular框架恰恰在很多地方做到了这一点。如果你曾经想知道Angular是如何神奇地自动处理表单的,现在你知道答案了。的ngForm指令有一个复杂的选择器,将适用于所有形式
元素默认情况下:
