web-dev-qa-db-ja.com

Angular Material DatePicker-エラー:MdDatepicker:DateAdapterのプロバイダーが見つかりません

以下の資料ドキュメント、I:

import {MdDatepickerModule} from '@angular/material';

ルートモジュールで、プロバイダーリストに追加しましたが、テンプレートでは使用しません。このエラーが発生しました:

不明(約束):エラー:MdDatepicker:DateAdapterのプロバイダーが見つかりません。アプリケーションルートで次のモジュールのいずれかをインポートする必要があります:MdNativeDateModule、またはカスタム実装を提供する。

それに従って、私は最後のインポートを削除して追加しました:

import {MdNativeDateModule} from '@angular/material';

そして今、それは動作するように見えます。マテリアルドキュメントがMdDatepickerModuleではなくMdNativeDateModuleをインポートするように指示する理由そして、それらはどのように違いますか?

15

ドキュメントの例 は実際にMdNativeDateModuleをインポートします。プランカリンクをクリックして、main.tsファイルを確認します。ドキュメントは、これについては好まれるほど明確ではありません。

MdDatepickerModuleは、コンポーネント自体を含むモジュールです。このコンポーネントは、使用する日付の実装に依存しません。

たとえば、JavaScriptのネイティブDateオブジェクトの代わりに Moment.JS日付 を使用したい場合、Moment.JSオブジェクトを操作する独自のクラスを作成できます。これは here で説明されています。

ただし、JavaScriptのDateオブジェクトを単に使用する場合は、@angular/materialに既に含まれているNativeDateAdapterクラスを使用する必要があります。このクラスは、MdNativeDateModuleによって提供されます。

このモジュールはUIコンポーネントのみを処理するため、MdDatepickerModuleでは提供されません。Moment.JSオブジェクトを使用している場合は、アプリケーションでNativeDateAdapterクラスを使用する必要はありません。

22
Aakash Jain

インポートしたら、@ Nangular/materialからMatNativeDateModuleをインポートする必要があります。 angular material で確認できる@NgModuleでインポートおよびエクスポートする必要があります。