147                    

看一下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应用的约定吗?

官方样式指南中似乎没有关于此的任何内容                    

                   

       

4个答案  正确答案                


         

209                        

$后缀(由Cycle.js填充)用于指示该变量是Observable它也可以进入官方样式指南,但还不存在                        

在这里阅读更多   用$(美元符)作为变量的结尾,表示是一个观察者对象 observable ,表示是一个流 stream

https://angular.io/guide/rx-library#naming-conventions-for-observables

https://cycle.js.org/basic-examples.html#basic-examples-increment-a-counter-what-is-the-convention


带后缀的美元符号$是什么意思?                        

更新: 在此处了解有关Angular网站上尾随“ $”符号的更多信息:https : //angular.io/guide/rx-library#naming-conventions-for-observables                        


       
13                        

$命名范例起源于安德烈·萨尔茨(Andre Saltz),并建议对包含可观察变量或流的所有变量名称进行复数处理。                        

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

另一种方法是使用与单词的最后一个字母匹配的unicode字符对包含可观察变量或流的变量名称进行复数化处理。这解决了没有用“ s”复数的单词的问题。                        

mouse$ vs mic€
                       

官方Angular样式指南中都没有这两种命名约定。使用其中一个(或不使用)完全取决于个人喜好。                        


       
8                        

更新 https //angular.io/guide/rx-library#naming-conventions-for-observables                        

由于Angular应用程序大多是用TypeScript编写的,因此通常您会知道变量何时是可观察的。尽管Angular框架没有对可观察对象强制执行命名约定,但是您经常会看到可观察对象以尾随“ $”符号命名。                            

这在扫描代码并查找可观察的值时很有用。同样,如果您希望属性存储可观察到的最新值,则可以方便地使用带有或不带有“ $”的相同名称。                            


原件                        

$在阅读官方英雄教程时,我看到变量以结尾                        

<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$而不是 heros                         

<li *ngFor="let hero of heroes$ | async" >
                       

$是一个约定,表示heroes $是可观察的,而不是数组。                        

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

自Angular5.1昨天(2017年12月6日)发布以来,我尚未在样式指南中找到它。                        


       
7                        

我没有$在样式指南中看到它,但是我看到它经常用于表示可订阅的可观察对象的公共属性。                        

改善这个答案                            

       

来自  https://stackoverflow.com/questions/37671700/angular2-style-guide-property-with-dollar-sign