Ich arbeite derzeit mit Angular und TypScript und ich möchte wissen, ob es möglich ist, Komponente @Input
s zu binden, um bestimmte Typen zu verwenden?Binding Angular Komponente mit spezifischen Typ
Beispiel
@Component({selector: 'foobar'})
export class FooComponent {
@Input() foo: number;
@Input() bar: boolean;
}
<foobar foo="123" bar="true"></foobar>
Wenn die Komponente gebunden ist, sind beide foo
und bar
string
. Bietet angular eine Möglichkeit, den angegebenen Typ zu erzwingen?
ich das versucht, aber ich mag es nicht ... (es scheint, schmutzig und nicht sehr elegant)
@Component({selector: 'foobar'})
export class FooComponent {
foo: number;
bar: boolean;
@Input('foo') set _foo(value: string) {
this.foo = Number(value);
}
@Input('bar') set _bar(value: string) {
this.bar = value === 'true';
}
}
Es wäre schön, wenn es etwas in Schräg die Eingabe ist, die handeln könnte als verbindlicher Delegierter; Zum Beispiel:
@Input('foo', (value: string) => Number(value)) foo: number = 123;
Was passiert, wenn ich einen nicht integrierten Typ wie eine Typoskript-Enumeration verwenden möchte? – series0ne
@ series0ne Das, denke ich, funktioniert nur, wenn Sie eine Eigenschaft einer anderen Komponente binden, sonst nicht. – Dinistro
@ series0ne Dies sollte kein Problem sein. Ich habe es nicht getestet, aber wenn Sie die Enumeration in der Komponente importieren (oder deklarieren), sollten Sie sie in der Vorlage verwenden können. – Wernerson