2017-09-15 4 views
2

mon problème ici est que je reçois une valeur de chaîne dans un comme un paramètre à un composant, mais je veux limiter les valeurs qui peuvent être utilisées comme paramètre, tout comme un EnumComment accepter uniquement les valeurs prédéfinies dans un @Input angulaire

J'utilise

@Input() type: string = ''; 

Mais dans le composant, tout peut être introduit dans la propriété « type » et je dois limiter cela à seulement trois options comme je l'ai dit, comme un Enum

+0

Cela dépend de ce que vous entendez par « limite », et à quel moment vous attendez l'avertissement/erreur à lancer. Une solution simple consiste simplement à vérifier les valeurs de votre composant et à lever une exception si elles ne sont pas valides. Si vous cherchez une solution de compilation, vous avez besoin d'au moins angulaire pour convertir vos templates en scripts au moment de la compilation (par exemple AOT) - dans ce cas, il suffit de taper simplement la valeur d'entrée. type. –

Répondre

3

Créez un Enum et définissez le type de votre input à l'enum. Votre valeur sera adoptée si elle est l'une des valeurs ENUM, sinon il sera undefined

enum MyEnum { 
    First, 
    Second, 
    Third 
} 

@Input() type: MyEnum; 
0

essayez ceci:

@Input() type: 'acceptable1' | 'acceptable2' | 'acceptable3'; 

Il utilise le type d'union tapuscrit permettant l'un des types énumérés. a ou b ou c etc

ou utilisez un TS enum