2017-07-24 69 views
0

说我们有角反应形式:如何获得()的打字稿工作

<form [formGroup]="form"> 
<input formControlName="username"> 
<div *ngIf="form.get('username').invalid">Invalid</div> 
</form> 

和组件:

export class FormClass { 
form = new FormGroup({ 
    username: new FormControl('', Validators.required); 
)} 
} 

为了使这条线更短 - <div *ngIf="form.get('username').invalid">Invalid</div>

我们添加一个get方法到组件:

get username() { 
return this.form.get('username') 
} 

所以现在我们能做的 - <div *ngIf="username.invalid">Invalid</div>

我不知道为什么我们不这样做呼叫这种方法吗?我们只是通过它作为一种对象 - 没有()。我的意思是这个方法是一个函数,函数被调用就像这样username()。在这种情况下,get()有点特别吗?对不起我的TS知识...

+0

因为这就是getters/setters如何在JS中工作,请阅读https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get –

+0

这是一个很好的问题,我认为它可以如果你不习惯在其他语言(如Java)中使用它,会令人困惑。有名为getter和setter。我不善于解释,但你可以在这里找到许多很好的答案,只需要寻找获得者和接受者。 – Vega

+0

谢谢大家,我会读一读。和@Maximus - 我以前访问过那个页面,只是阅读/理解文档对我来说还是有点难... –

回答

1

因为通过添加get使它成为吸气剂并且可以像字段一样被访问(读取)。这是一个TypeScript功能。

使用set您可以创建一个匹配的setter,并且您可以读取它们并将其设置为一个字段。

+0

我希望你的个人资料图像至少在20年前制作完成。谢谢你的回答,现在它对我来说更加清晰 –