2016-04-10 1 views
0

私はTypeScriptとAngular 2を使い慣れていません。私はAngular 1からプロジェクトを移動する途中にあり、私のプロパティ定義のいくつかをAngular 2コンポーネントに渡すことができません。角2 - オブジェクトドット表記のチョーキング、 ';'

私はこれらのプロパティ定義を持っている:

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'; 
} 

角1は(contactFormOptions.initDateDefault = '';のように)このように私は、オブジェクトのプロパティを定義すると大丈夫でした。ドットシンタックスを使用します。しかし、Typescriptはこれらのプロパティのドット表記でチョークし、;と言います。どうして?私は何が欠けていますか?

ありがとうございます!

+0

これらのプロパティは定義されていないと思います。これについても、角括弧 – GeoffreyB

+0

の角括弧を使用する必要があります。 'contactFormOptions ['initDateDefault'] = moment();'期待していると言っています。私は後で使用するためにそれらの行のプロパティを定義しようとしています。 – Mattaton

+0

このコードの実行場所に関する詳細は? :) –

答えて

0

わかりましたので、それはちょうど私はOOPの世界に新しいものです。私が必要だったのは、プロパティとその型を宣言してから、コンストラクタ(またはメソッド)内で値を割り当てることでした。

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

TypeScriptがmoment.jsを理解するためには、定義ファイルが必要です。幸いなことに、1はmoment.jsで提供され、よっぽど型付きであなただけの、またここに考え出しされた基準を、追加する必要があります。明確にするため

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

、どのようなコードを追加する必要があることです。

declare var moment: moment.MomentStatic;

+0

私はそれが瞬間と関係がないとは思わない。値を空の文字列に設定しようとしているにもかかわらず、同じことが起こります。 – Mattaton

+1

私の質問を更新して、方程式からmoment.jsを削除しました。それでも、オブジェクトのプロパティのドット表記法では不安定になります。 – Mattaton

関連する問題