15

Angular 2 webapp でリアクティブ フォームを使用していますが、日付を ngbDatepicker (ngbootstrap 1 alpha 6) に割り当てるのに問題があります。私のオブジェクトには、次のような日付オブジェクトがあります。

var myObject = {date: new Date(1, 9, 2016)};

私のリアクティブ形式では、次のように構成されています。

input.form-control(name='date', ngbDatepicker, #date="ngbDatepicker", placeholder='jj.mm.aaaa', formControlName='date', type="text")

そして、次のようにフォームにパッチを当てます。

this.form.patchValue({myObject: myObject});

問題はngbDatepicker、次の構造で日付を取得することです。

{day: DD, month: MM, year: YYYY}

次の回避策を見つけました。

this.form.controls.myObject.controls.date.valueChanges
        .map((value) => {
            if(value) {
                if (typeof value.getMonth === 'function') {
                    this.form.controls.myObject.patchValue({
                        date: {
                            day: value.getUTCDay(),
                            month: value.getUTCMonth(),
                            year: value.getUTCFullYear()
                        }
                    });
                }
            }
            return value;
        })
        .subscribe((value) => {

        });

そして、すべてが期待どおりに機能します (フォームにパッチが適用されるたびに日付が更新されます)。

私の質問は、はるかに短いソリューションで同じ結果を達成できるかということです。

4

3 に答える 3

2

@ncohen 私たちも痛みを埋めます。 https://github.com/ng-bootstrap/ng-bootstrap/issues/754を参照してください。現時点では完璧な解決策はありません。最終的には、AngularJS から知られているパーサー/フォーマッターの形式で Angular 自体から取得する必要があります。Angular リポジトリには、ユースケースを機能リクエストとして追跡する 2 つの問題が既にあります。

現時点では、詳細なコードをユーティリティ関数に抽出し、変換が必要なときにそれを呼び出すことが最善の選択肢であると思います(コメントの1つで提案されているように)。

于 2016-10-02T16:52:46.473 に答える