【发布时间】:2017-11-29 02:26:14
【问题描述】:
要设置组件的字符串@Input()属性,我们可以使用两种语法:
<my-component caption="Hello there" type="primary" someThing="text value"></my-component>
或者:
<my-component [caption]="'Hello there'" [type]="'primary'" [someThing]="'text value'"></my-component>
我完全了解这两种类型的绑定之间的区别。问题是:如果我有一堆我想静态设置的字符串 @Input() 属性,我可以使用简单的属性绑定语法(第一个示例)而不是更多“肉”属性绑定语法(第二个示例)吗?
建议是什么,为什么? IE。有哪些权衡?最好始终使用属性绑定,即使是设置静态字符串输入?
以下是我能想到的几个缺点:
- 属性绑定实际上是作为 HTML 属性应用的,例如 用户可以通过浏览器的开发工具轻松查看/更改它们。财产 绑定不是标记的一部分。
- 属性绑定可能会发生冲突
带有实际的 HTML 属性名称(除非您在它们前面加上
data-这违背了简单的整个目的)。实际例子 已经咬我的是title属性。 - 使用 Angular 语言服务进行属性绑定的标记中没有智能感知。
但主要优点是简单。在上面的示例中,您会同意第一种形式更优雅。在我的项目中,似乎大量属性是常量(一次性设置)字符串属性,并且语法在可读性方面产生了实际差异。
那么...对自定义(非 HTML)字符串属性使用属性绑定语法是一种不好的做法吗? (鉴于我知道/可以接受上面列出的一些限制)
【问题讨论】: