以下の資料ドキュメント、I:
import {MdDatepickerModule} from '@angular/material';
ルートモジュールで、プロバイダーリストに追加しましたが、テンプレートでは使用しません。このエラーが発生しました:
不明(約束):エラー:MdDatepicker:DateAdapterのプロバイダーが見つかりません。アプリケーションルートで次のモジュールのいずれかをインポートする必要があります:MdNativeDateModule、またはカスタム実装を提供する。
それに従って、私は最後のインポートを削除して追加しました:
import {MdNativeDateModule} from '@angular/material';
そして今、それは動作するように見えます。マテリアルドキュメントがMdDatepickerModule
ではなくMdNativeDateModule
をインポートするように指示する理由そして、それらはどのように違いますか?
ドキュメントの例 は実際にMdNativeDateModule
をインポートします。プランカリンクをクリックして、main.tsファイルを確認します。ドキュメントは、これについては好まれるほど明確ではありません。
MdDatepickerModule
は、コンポーネント自体を含むモジュールです。このコンポーネントは、使用する日付の実装に依存しません。
たとえば、JavaScriptのネイティブDate
オブジェクトの代わりに Moment.JS日付 を使用したい場合、Moment.JSオブジェクトを操作する独自のクラスを作成できます。これは here で説明されています。
ただし、JavaScriptのDate
オブジェクトを単に使用する場合は、@angular/material
に既に含まれているNativeDateAdapter
クラスを使用する必要があります。このクラスは、MdNativeDateModule
によって提供されます。
このモジュールはUIコンポーネントのみを処理するため、MdDatepickerModule
では提供されません。Moment.JSオブジェクトを使用している場合は、アプリケーションでNativeDateAdapter
クラスを使用する必要はありません。
インポートしたら、@ Nangular/materialからMatNativeDateModuleをインポートする必要があります。 angular material で確認できる@NgModuleでインポートおよびエクスポートする必要があります。