我知道这听起来像一个愚蠢的问题,但我对Angular是否真的区分大小写或仅在某些情况下有点困惑?
昨天我被一段代码困住了几个小时,我无法使它工作。我在SO上发布了问题,但我发现问题在于我使用的是ngfor
而不是ngFor
。在我修好之后,它运作得很好。
同样在我的代码中,我使用的是[innerHtml]
,但有关人员纠正了我的说法,正确的拼写是[innerHTML]
。但是,我的代码与前者一起正常工作。现在我的问题是,如果Angular确实区分大小写,那么我以前的实现应该不会真正起作用。
有人可以详细说明这个吗?
答案 0 :(得分:5)
是的,因为angular
2/4使用区分大小写的typescript
。
在您的情况下,ngFor
在structural directive
中是angular
,但在innerHTML
中,它是HTML
属性,HTML
isn&#39 ;区分大小写。
答案 1 :(得分:1)
详细说明你的问题,
最新版本的angular使用Typescript,所有像ngIf和ngFor这样的角度内部指令都是用typescript编写的,所以它是一个区分大小写的,
HTML通常不区分大小写,但将HTML标记保持为小写是一种很好的做法。
在你的情况下[innerHtml]是HTML的DOM属性,因此可以用小写的方式编写
答案 2 :(得分:0)
是的,Angular
这样的*ngFor
结构化指令区分大小写。
如果您改写*ngfor
,Angular不会将相关的html块渲染为模板:
https://angular.io/guide/template-syntax#ngfor
此外,property binding
在Angular中也区分大小写。这里要注意的重要一点是Angular引用了Html DOM properties
而不是Html attributes
。
HTML属性仅用于初始化html,此后不会更改。
另一方面,DOM属性可以更改:
https://angular.io/guide/template-syntax#html-attribute-vs-dom-property
在您使用innerHTML的情况下,innerHTML
是DOM元素的正确拼写。您是对的,innerHtml
也可以正常工作。老实说,我找不到原因。但是其他类似innerhtml
的拼写形式都会导致错误:
无法绑定到“ innerhtml”,因为它不是“ p”的已知属性
我可以想象innerHtml
就像一个“隐藏的” Html属性,初始化后也可以更改。