Angular 7中的$是什么意思

afe*_*eef 5 angular angular7

我对变量声明有些困惑.

什么意味着英雄$

Angular 4

export class HeroSearchComponent implements OnInit {
heroes: Observable<Hero[]>;
private searchTerms = new Subject<string>();

constructor(
 private heroSearchService: HeroSearchService,
 private router: Router) {}
Run Code Online (Sandbox Code Playgroud)

Angular 7+

 export class HeroSearchComponent implements OnInit {
 heroes$: Observable<Hero[]>;
 private searchTerms = new Subject<string>();
 constructor(private heroService: HeroService) {}

     // Push a search term into the observable stream.
          search(term: string): void {
          console.log(term);
            this.searchTerms.next(term);
        }
Run Code Online (Sandbox Code Playgroud)
  • 我在角度7 ver中有混淆,其中英雄被赋予$ variable.

  • 我试图从var中删除$符号然后代码不起作用.

  • 任何建议都是最受欢迎的

Sid*_*era 7

这是Observables遵循的惯例.以下是Angular Docs对此的评价:

由于Angular应用程序主要使用TypeScript编写,因此通常会知道变量何时是可观察的.尽管Angular框架没有强制执行可观察对象的命名约定,但您经常会看到以带有"$"符号命名的observable.

在扫描代码并查找可观察值时,这非常有用.此外,如果您希望属性存储来自observable的最新值,则可以方便地使用带有或不带"$"的相同名称.

没有遵循它就没有害处.但由于这是一个推荐,所以最好遵循.

UPDATE

随着时间的推移,约定会根据开发人员的过去经验而发展.这项具体公约于2018年1月10日承诺

所以,是的,这个约定被添加到Angular 5之后的Docs中,并且你很有可能在Angular 4中工作时没有使用它.

此外,在Angular 5中升级到Rxjs 5.5之后,Rxjs的语法也发生了显着变化(不确定确切的版本).因此,您可能想要检查Rxjs的语法随时间的变化情况.有一个漂亮的工具来帮助你.查看RxJS Explorer 2.0:了解.相比.更新.

  • 它取决于变量的名称.如果你有`$`后缀,那么对于那个变量,它应该是`$`后缀.它可能无法正常工作,因为您忘记从使用此变量的模板中删除`$`,可能使用`async`管道.如果您仍然觉得存在混淆,我会请求您创建一个Sample StackBlitz来复制此问题,以便我可以弄清楚问题究竟是什么. (2认同)