查看angular2 code example,我们会看到一些带有$ sign的公共属性:
Error
任何人都可以解释:
似乎没有关于此in the official style guide的任何内容?
答案 0 :(得分:182)
$ suffix (由Cycle.js推广)用于表示变量是Observable。 它也可以成为官方风格指南,但它还不存在
在此处阅读更多内容:What does the suffixed dollar sign $
mean?
<强>更新强> 在此处阅读更多关于Angular网站上的尾随“$”符号的信息: https://angular.io/guide/rx-library#naming-conventions-for-observables
答案 1 :(得分:12)
$命名范例源于Andre Saltz,并建议复数包含可观察量或流的所有变量名称。
getAll(): Observable<Zone[]>{
let zone$ = this.http
.get(`${this.baseUrl}/zones`, {headers: this.getHeaders()})
.map(mapZone);
return zone$;
}
另一种方法是复制包含observable或stream的变量名,其中unicode字符与单词的最后一个字母相匹配。这解决了使用&#34; s&#34;来复制的单词的问题。
mouse$ vs mic€
这些命名约定都不在官方Angular样式指南中。使用一个或另一个(或没有)完全取决于个人偏好。
答案 2 :(得分:8)
<强> 更新:强> https://angular.io/guide/rx-library#naming-conventions-for-observables
因为Angular应用程序大多是用TypeScript编写的,所以通常会知道变量何时是可观察的。尽管Angular框架没有强制执行可观察对象的命名约定,但您经常会看到以带有“$”符号命名的observable。
在扫描代码并查找可观察值时,这非常有用。此外,如果您希望属性存储来自observable的最新值,则可以方便地使用带有或不带“$”的相同名称。
<强> 原始 强>:
在阅读官方英雄教程时,我看到变量以$
结尾:
<div id="search-component">
<h4>Hero Search</h4>
<input #searchBox id="search-box" (keyup)="search(searchBox.value)" />
<ul class="search-result">
<li *ngFor="let hero of heroes$ | async" >
<a routerLink="/detail/{{hero.id}}">
{{hero.name}}
</a>
</li>
</ul>
</div>
仔细观察,你会发现* ngFor遍历名为heroes$
的列表,不是英雄。
<li *ngFor="let hero of heroes$ | async" >
$是一个约定,表示英雄$是一个Observable,而不是一个数组。
大多数情况是我们不在组件中订阅那些Observable变量。我们通常使用AsyncPipe自动订阅Observable变量
自Angular5.1于昨天(2017年12月6日)发布以来,我还没有在Style Guide中找到它。
答案 3 :(得分:7)
我还没有在样式指南中看到这个$
,但我看到它经常被用于引用可以订阅的可观察对象的公共属性。