我正在做Angular2英雄项目
https://angular.io/docs/ts/latest/tutorial/toh-pt2.html之旅
.
.
<li *ngFor="let hero of heroes" (click)="onSelect(hero)">{{hero.name}}</li>
在这里,我可以使用以下功能提醒当前的英雄姓名和身份
onSelect(hero) { alert(hero.id); }
但是为什么在官方教程中使用它
onSelect(hero: Hero){ }
为什么英雄:英雄?
还有什么意思onSelect(hero:Hero):void {}.
的意义是什么
selectedHero: Heroes; onSelect(hero: Heroes): void { this.selectedHero = hero; }
请帮忙 .
当您输入“英雄”时,它将假定它具有“任何”类型.当你说英雄:Hero时,你将变量的类型划分为’Hero’,这意味着该函数只接受Hero类型的参数或它的抽象.
编辑:对于void部分,这是函数的返回类型.虚空意味着它什么都不会返回.
EDIT2:
selectedHero: Hero OnSelect(hero: Hero): void{ this.selectedHero = hero; }
所以’selectedHero:Hero’部分你定义了’Hero’类型的变量’selectedHero’.
你定义你的函数’OnSelect’,它接受’Hero’类型的参数’hero’. ‘hero’将是您在“OnSelect”函数中用于访问参数的名称.
该函数返回void,这意味着它不返回任何内容,只是执行函数中声明的内容.
部分this.selectedHero =英雄;比较棘手.在组件的上方,您定义了一个名为“hero”的Hero变量.它超出了函数的范围. ‘this’指的是您所在的组件类,它是用于访问它的关键字.因此,要访问函数之外但仍在对象中的变量,请使用关键字“this”.
好吧,当你点击英雄时,OnSelect功能会被触发,你传递你刚刚点击的英雄(英雄:’英雄’).然后你做的是设置当前对象的英雄(this.selectedHero)等于你刚刚点击的英雄(英雄:英雄).
每次单击一个英雄时,它都会将selectedHero替换为您单击的一个.
PS:我对’this’关键字的解释是抽象的,可以理解,我知道还有更多,然后我解释,但这是为了这个人的问题,因为他是新的发展.