2016-06-07 68 views
54

看着angular2 code example,我们看到$签署一些公共属性:angular2风格指南 - 财产与美元符号?

<....> 
    private missionAnnouncedSource = new Subject<string>(); 
    private missionConfirmedSource = new Subject<string>(); 
    // Observable string streams 
    missionAnnounced$ = this.missionAnnouncedSource.asObservable(); 
    missionConfirmed$ = this.missionConfirmedSource.asObservable(); 
    <....> 

谁能解释:

  • 为什么使用$(这是什么符号背后的原因总是用这个公开属性)?
  • 使用公共属性,但不使用方法(例如,missionAnnouncements(),missionConfirmations()) - 这又是一个ng2应用程序的约定吗?

似乎没有任何关于这个in the official style guide

回答

5

我在样式指南中没有看到这$,但我看到它经常用于引用可订阅的观察值的公共属性。

7

的$命名模式起源于安德烈·萨尔茨和建议复数化包含观测或流中的所有变量名。

getAll(): Observable<Zone[]>{ 
    let zone$ = this.http 
     .get(`${this.baseUrl}/zones`, {headers: this.getHeaders()}) 
     .map(mapZone); 
     return zone$; 
    } 

另一种方法是变复数包含观测或与这个词的最后一个字母相匹配的Unicode字符流变量名。这解决了与“s”不复用的单词的问题。

mouse$ vs mic€ 

这两种命名约定都不在官方的Angular风格指南中。一个或另一个(或没有)的使用完全取决于个人偏好。

+1

cactu $ vscactï –

2

只见阅读官方英雄教程当变量结束与$

<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" > 

的$是一个惯例,表示英雄$是可观察到的,而不是阵列。

大多数情况是我们不订阅组件中的那些可观察变量。我们通常使用AsyncPipe自动订阅Observable变量

自从Angular5.1昨天发布(2017年12月6日)以来,我还没有在Style Guide中找到它。