comment correctement et simplement déclarer un objet dans Angular2
Je suis en train de déclarer un objet et de définir les valeurs par défaut dans mon ionique 2 app, mais je ne comprends pas tapuscrit et angular2 très bien encore.
Je l'ai fait:
@Component({
selector: 'page-weightlevel'
, templateUrl: 'weightlevel.html'
})
export class WeightlevelPage {
name: string;
firstNavParam: boolean;
data = any;
data.shareoptions: ['Facebook', 'Twitter', 'Email'];
data.techniqueText: string;
data.frequScaleWording: string[];
data.fitnessWording: string[];
data.levelName: string[];
constructor(
public navCtrl: NavController,
....
et j'obtiens cette erreur:
Typescript Error
';' expected.
src/pages/weightlevel/weightlevel.ts
data.shareoptions: ['Facebook', 'Twitter', 'Email'];
le point entre les données et les shareoptions n'est pas le bienvenu apparemment.
Pouvez vous nous aider s'il vous plaît ?
data.shareoptions: ['Facebook', 'Twitter', 'Email'];
devrait être data.shareoptions = ['Facebook', 'Twitter', 'Email'];
il donne la même erreur avec "=". Est-il juste de le faire avant le
constructor
?fait juste, même erreur
découvrez ma réponse
OriginalL'auteur Louis | 2017-03-24
Vous devez vous connecter pour publier un commentaire.
La façon de déclarer/initialiser un Objet dans le Tapuscrit est, est comme le nom l'indique, tapant vos données. Vous pourriez aller avec
any
, mais juste défie le but de caractères d'imprimerie. Ainsi, au lieu de créer un modèle avec des propriétés souhaitées et ainsi de déclarer un objet vide serait:Ce que vous êtes maintenant en train de faire est d'affecter des données à votre objet. Pour cela, utilisez de l'
=
Comme par abordés dans les commentaires, vous pouvez naturellement déclarer le tableau à l'intérieur de l'Objet dans le composant comme suit:
Rappelez-vous que, même avec la déclaration d'un type, par exemple de l'interface, il n'existe pas sur le moment de l'exécution. Le typage est juste pour le compilateur pour vous aider et vous dire quand vous essayez d'affecter des valeurs ou des propriétés qui n'existent pas dans votre modèle. Donc vous pouvez les remplacer tous les modèles et que votre application s'exécuter sans erreur.
data: Object = {};
et de données.shareOptions = ['Facebook', 'Twitter', 'Email']` avant de la consctructor, dans le constructeur, ou quelque part d'autre?et pourquoi n'est-il pas une "ce"... je pensais que c'était nécessaire d'utiliser des variables dans la portée.
Oui, si vous attribuez des valeurs de e.g dans ngOnInit vous devez utiliser
this
, n'a tout simplement pas de l'inclure dans ma réponse, je vais changer ça 😉 Voici un simple plunker: plnkr.co/modifier/E1Q1jg3GciA2H3hy85ew?p=previewMais quelle est l'utilité d'avoir un "constructeur", vous avez alors utiliser une autre fonction (ngOnInit) ?
Vous pouvez lire à propos de la différence ici, dans ces bonnes réponses: stackoverflow.com/questions/35763730/... 🙂
OriginalL'auteur AJT_82
dans mon expérience, j'ai créé un objet de la manière suivante. mais j'ai eu des erreurs lorsque j'ai exécuté le script de construction angulaire 5.2. ensuite, j'ai utilisé la deuxième manière.
mauvais sens:
droit chemin:
OriginalL'auteur Kumaresan Perumal
Dans le cas où il existe déjà un modèle de classe créée
OriginalL'auteur Charlie
Je ne comprends pas le
interface
solutions, et ils ont été downrated, je suis donc allé avec ceci:et il semble fonctionner.
OriginalL'auteur Louis
Vous devez d'abord créer une nouvelle classe dans votre fichier de modèle. si il n'y a pas un modèle de fichier créer un nouveau. ensuite, créez une classe avec des propriétés comme ci-dessous.
L'utilisation de cette classe de créer un nouvel objet dans votre composant
PS
Après : marque, vous pouvez attribuer un type de données. ['Facebook', 'Twitter', 'Email'] n'est pas un type de données. si vous avez besoin d'assigner des données d'un tableau, veuillez utiliser = marque. si vous avez besoin d'accorder de la valeur à un tableau, veuillez le faire à l'intérieur du constructeur
Édité:
Après : marque, vous pouvez attribuer un type de données. ['Facebook', 'Twitter', 'Email'] n'est pas un type de données. si vous avez besoin d'assigner des données d'un tableau, veuillez utiliser = marque. si vous avez besoin d'accorder de la valeur à un tableau, veuillez le faire à l'intérieur du constructeur
Et je ne veux pas créer une nouvelle classe, c'est juste un objet simple j'ai besoin de flexibilité et d'ajouter ou de retirer la clé paires de valeur:si j'en ai besoin.
Voir mon édité répondre
OriginalL'auteur Krishan