2016-04-10 9 views
0

Ich bin neu in TypeScript und Angular 2. Ich bin dabei, ein Projekt von Angular 1 zu verschieben und ich habe Probleme, einige meiner Eigenschaftsdefinitionen in die Angular 2-Komponente zu bekommen.Angular 2 - Typoskriptdrosselung bei Objektpunktnotation, erwartet ';'

Ich habe diese Eigenschaft Definitionen:

import { Component } from 'angular2/core'; 
@Component({ 
    selector: 'contact-detail', 
    templateUrl: 'app/contacts/contact-detail.template.html', 
    styleUrls: ['app/contacts/contact-detail.style.css'] 
}) 
export class ContactDetailComponent { 
    contactFormOptions = {}; 
    contactFormOptions.initDateDefault = ''; 
    contactFormOptions.followUpDateDefault = ''; 
    contactBasicInfo: {}; 
    contactBasicInfo.bdMonth = '0'; 
    contactBasicInfo.bdDay = '0'; 
} 

Angular 1 war in Ordnung mit mir Objekteigenschaften definieren (wie contactFormOptions.initDateDefault = '';) auf diese Weise. Mit der Punktsyntax. Allerdings erstickt Typescript die Punktnotation dieser Eigenschaften und sagt, dass ein ; erwartet wird. Warum? Was vermisse ich?

Danke!

+0

Ich denke, dass diese Eigenschaften nicht definiert sind. Sie sollten auch die Klammernotation – GeoffreyB

+0

Chokes verwenden: 'contactFormOptions ['initDateDefault'] = moment();' Sagt, dass es '=' erwartet. Ich versuche, die Eigenschaften in diesen Zeilen für die spätere Verwendung zu definieren. – Mattaton

+0

Können Sie mehr Kontext angeben, wo dieser Code ausgeführt wird? :) –

Antwort

0

okay, so ist es einfach zu sein, ich möchte in der OOP Welt. Was ich tun musste, war, die Eigenschaften und ihre Typen zu deklarieren und dann Werte innerhalb eines Konstruktors (oder einer Methode) zuzuweisen.

export class ContactDetailComponent { 
    contactFormOptions: any = {}; 
    contactBasicInfo: any = {}; 

    constructor () { 
    this.contactFormOptions.initDateDefault = moment(); 
    this.contactFormOptions.followUpDateDefault = moment().add(7, 'days'); 
    this.contactBasicInfo.bdMonth = '0'; 
    this.contactBasicInfo.bdDay = '0'; 
    } 
} 
0

Damit TypeScript moment.js versteht, benötigen Sie eine Definitionsdatei. Zum Glück, eines mit moment.js versehen ist, und Sie müssen nur den Verweis hinzuzufügen, die auch hier herausgefunden wurde, bei Defintely typisierten:

https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/moment/moment.d.ts

Aus Gründen der Klarheit müssen, was mit dem Code hinzugefügt werden soll:

declare var moment: moment.MomentStatic;

+0

Ich glaube nicht, dass es etwas mit dem Moment zu tun hat. Es wird das gleiche tun, auch wenn ich nur versuche, den Wert auf eine leere Zeichenfolge zu setzen (keinen Moment zu verwenden). – Mattaton

+1

Meine Frage aktualisiert, um moment.js aus der Gleichung zu entfernen. Es drosselt immer noch die Punktnotation der Objekteigenschaften. – Mattaton