私はAngular2の新しいフォームAPIについて読んでいますが、フォームには2つのアプローチがあるようです。1つはテンプレート駆動フォームで、もう1つは反応フォームまたはモデル駆動フォームです。
(明らかに)構文の違いではなく、2つの実際的な使用方法の違いを知りたいのですが、実際の使用方法と、さまざまなシナリオでどちらのアプローチがよりメリットがあるかを知りたいと思います。また、どちらか一方を選択するとパフォーマンスが向上しますか?そして、もしそうなら、なぜですか?
私はAngular2の新しいフォームAPIについて読んでいますが、フォームには2つのアプローチがあるようです。1つはテンプレート駆動フォームで、もう1つは反応フォームまたはモデル駆動フォームです。
(明らかに)構文の違いではなく、2つの実際的な使用方法の違いを知りたいのですが、実際の使用方法と、さまざまなシナリオでどちらのアプローチがよりメリットがあるかを知りたいと思います。また、どちらか一方を選択するとパフォーマンスが向上しますか?そして、もしそうなら、なぜですか?
回答:
テンプレート駆動フォームの機能
[(NgModel)]
構文を使用)リアクティブフォームの機能
コード、戦略、ユーザーエクスペリエンスについての議論だと思います。
要約すると、より操作しやすいテンプレート駆動型アプローチから、より制御性を高めるための反応型(モデル駆動型アプローチ)に変更し、HTML間のデカップリング(設計/ CSSチームはここで作業できます)とコンポーネントのビジネスルール(angular / jsスペシャリストメンバー)、および反応型変換、相関検証などの機能でユーザーエクスペリエンスを改善し、ランタイム検証ルールおよび動的フィールドの複製として複雑なシナリオを処理できます。
この記事はそれについての良いリファレンスです: Angular 2 Forms-テンプレート駆動型とモデル駆動型アプローチ
反応フォーム:
テンプレート駆動型フォーム:
要約では、フォームがアプリにとって非常に重要である場合、またはアプリでリアクティブパターンが使用されている場合は、リアクティブフォームを使用する必要があります。それ以外の場合、アプリには、サインインなどのフォームに関する基本的かつ単純な要件があるため、テンプレート駆動型フォームを使用する必要があります。
テンプレート駆動型フォーム:
FormsModuleを使用してインポート
ngModelディレクティブで構築されたフォームは、DOMの存在を必要とするため、エンドツーエンドテストでのみテストできます
フォーム値は、2つの異なる場所で使用できます。ビューモデル、つまりngModel
フォームの検証。フィールドに検証タグを追加するか、複雑なフィールド間検証の追加を開始すると、フォームの可読性が低下します。
反応フォーム:
一般的に大規模アプリケーションに使用できます
複雑な検証ロジックは実際には実装が簡単です
ReactiveFormsModuleを使用してインポート
フォームの値は、ビューモデルとFormGroupの2つの異なる場所で使用できます。
ユニットテストが簡単:クラスをインスタンス化し、フォームコントロールにいくつかの値を設定して、フォームのグローバル有効状態と各コントロールの有効状態に対してアサーションを実行するだけで、これを実行できます。
リアクティブプログラミングのためのオブザーバブルの使用
例:パスワードフィールドとパスワード確認フィールドは同一である必要があります
反応的な方法:関数を作成してFormControlにプラグインするだけです
テンプレート駆動型:ディレクティブを定義し、何とかして2つのフィールドの値を渡す必要があります
https://blog.angular-university.io/introduction-to-angular-2-forms-template-driven-vs-model-driven/