我对变量声明有些困惑。
$在英雄中的含义是什么>
角度4
export class HeroSearchComponent implements OnInit {
heroes: Observable<Hero[]>;
private searchTerms = new Subject<string>();
constructor(
private heroSearchService: HeroSearchService,
private router: Router) {}
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);
}
我在角度7 ver中有困惑 英雄分配了$变量。
我尝试从var中删除$符号,然后代码不起作用。
任何建议都是最欢迎的
答案 0 :(得分:5)
这是Observable的约定。 Angular Docs对此的评价如下:
由于Angular应用程序大多数是用TypeScript编写的,因此通常您会知道变量何时是可观察的。尽管Angular框架没有对可观察对象强制执行命名约定,但是您经常会看到可观察对象的名称后面带有“ $”符号。
这在扫描代码并查找可观察的值时很有用。另外,如果您希望属性存储可观察到的最新值,则可以方便地使用带有或不带有“ $”的相同名称。
不遵循它没有任何危害。但是,由于这是一个建议,因此最好遵循。
公约随着时间的推移而发展,取决于开发人员的过去经验。这个特殊的约定是committed on the 10th of Jan, 2018
是的,这个约定是在Angular 5之后添加到文档中的,很有可能您在Angular 4中工作时没有使用它。
此外,在Angular 5中升级到Rxjs 5.5之后,Rxjs的语法也发生了很大变化(不确定确切的版本)。因此,您可能想检查一下Rxjs的语法是如何随时间变化的。有一个漂亮的工具可以帮助您。检出RxJS Explorer 2.0: Learn. Compare. Update.