2017-07-24 4 views
0

Sagen wir Angular Reactive Form haben:Wie get() arbeitet in Typoskript

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

Und Komponente:

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

diese Linie kürzer zu machen - <div *ngIf="form.get('username').invalid">Invalid</div>

Wir fügen eine get Methode zur Komponente:

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

So, jetzt können wir tun - <div *ngIf="username.invalid">Invalid</div>

Ich frage mich, warum wir nicht Aufruf diese Methode tun? Wir übergeben es einfach als eine Art Objekt - ohne (). Ich meine, diese Methode ist eine Funktion und die Funktion wird so aufgerufen username(). Ist get() in diesem Fall irgendwie speziell? Entschuldigung für mein schlechtes TS-Wissen ...

+0

weil so Getter/Setter in JS arbeiten, lesen Sie https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get –

+0

Es ist eine gute Frage, und ich denke, es kann verwirrend sein, wenn Sie in anderen Sprachen (wie Java) nicht daran gewöhnt sind. Es gibt sogenannte Getter und Setter. Ich bin nicht gut darin zu erklären, aber Sie können viele Fragen finden, die hier auf SO gut beantwortet werden, suchen Sie einfach nach Gettern und Setter. – Vega

+0

Danke an alle, ich werde darüber lesen. Und @Maximus - Ich habe diese Seite schon einmal besucht, nur das Lesen/Verstehen von Dokumenten ist immer noch ein bisschen schwer für mich .. –

Antwort

1

Weil durch das Hinzufügen get macht es ein Getter und kann wie ein Feld (lesen) zugegriffen werden. Dies ist eine TypeScript-Funktion.

Mit set können Sie einen passenden Setter erstellen und mit beiden können Sie es wie ein Feld lesen und einstellen.

+0

Ich hoffe, dass dein Profilbild vor mindestens 20 Jahren gemacht wurde. Danke für die Antwort, jetzt ist es ein bisschen klarer für mich –

Verwandte Themen