2016-06-07 32 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中找到它。