これをどう説明したらいいのかよくわかりませんが、ベストを尽くすつもりです。
http://plnkr.co/edit/mbKvRoXl92f4zPJLxRGJ?p=preview
TLDR バージョン:
- 必要な属性を満たすために、ドロップダウン メニューから「abcdefg@yahoo.com」を選択します。
- 「自宅のメール」入力欄から「abcdefg@yahoo.com」を削除します。
- ドロップダウン メニューでメールが選択されていないことに注意してください。ただし、required 属性はまだ満たされています。
ロングワインドバージョン
私が持っているのは、配列 ($scope.contact.emails) 内のオブジェクトに関連付けられているいくつかの入力フィールドです。次に、これらのオブジェクトを含む配列が select 要素に関連付けられます。select 要素には、現在選択されている配列のオブジェクトを含む ng-model ディレクティブがあります。
ページがロードされるとき、何も選択されていないため、select に関連付けられた ng-model (default_email) は定義されておらず、select 要素の横に「必須」テキストが表示されます。
「メール」フィールドは必須ですが、「自宅のメール」フィールドは必須ではないことに注意してください。ドロップダウンで、「優先する電子メール」が「自宅の電子メール」フィールド (abcdefg@yahoo.com) の電子メールであることを選択すると、選択要件が満たされ、連絡先オブジェクトの default_email プロパティに次のオブジェクトが割り当てられます。そのフィールド (default_email":{"id":"home_email","name":"Home Email","address":"abcdefg@yahoo.com"})
ここに問題があります。「自宅の電子メール」入力ボックスの内容を削除して空にすると、選択が「優先電子メールを選択してください」に変わりますが、オブジェクトはまだ連絡先オブジェクトの default_email プロパティに割り当てられています、入力で指定された type="email" の要件を満たさなくなったため、プロパティ "address" が欠落しています。本当の問題は、「必須」ラベルを表示する必要があることですが、そうではありません。これは、default_email が定義されているためです。それに割り当てられたオブジェクトだけに、実際に必要なプロパティ、つまり「アドレス」がありません。
どんな助けでも大歓迎です。より多くの詳細や説明が役立つかどうかを教えてください。本当にAngularが初めてなので、しばらくお待ちください。