問題タブ [angular-forms]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
95 参照

angularjs - 別のフィールドをクリックして値を変更するまで、AngularJS フォームが有効性を更新しないのはなぜですか?

おはようございます!私はまだAngularJSにかなり慣れていないので、完全に理解できる答えが見つかりませんでした.

次のような構造のフォームがあります。

  • 名前
  • Eメール
  • カラー[オプションレッド、オプションブルー]
    • [色] でオプション ブルーを選択した場合にのみ表示される必須フィールド

Option Blueを選択すると、2 番目のフィールド セットが表示されます。ただし、 「オプション ブルー」の選択を解除すると、必須フィールドは再び非表示になりますが、別のフィールド (「名前」など) をクリックして別の値を入力するまで、フォームはフィールドが空であることを「認識」します。

条件は、イベント リスナー (?) が発生するたびにブール値の$form.$validをチェックします。これは onItemSelect と onItemDeselect と onSelectionChange です。

私がAngularについて理解していることから、私は...クリックて別のフィールドに入力するまで、別のダイジェスト(?)サイクルが開始されていないと思いますか? 疑問符がいっぱいで申し訳ありません。私の知識は少し不安定で、理由によりソース コードを完全に貼り付けることができません。

私の理解は正しいですか?もしそうなら、この問題を解決するための推奨される方法はありますか?

編集:ダミーの変数名とオブジェクト名を含むいくつかのサンプル コードを以下に追加し、コードのより大きなセクションを要約するためにいくつかの擬似コードを追加しました。

いくつかのデバッグ アラートを設定しました。OptionBlue の選択を解除すると、アラートに次の行が表示されることに気付きました: requiredFieldifOptionBisChosen: object Object

ただし、別のフィールドをクリックして値を入力すると、フォームは有効性を更新 (?) し、「requiredFieldifOptionBisChosen: null」と表示されます。

0 投票する
1 に答える
5856 参照

angular - Angular 4リアクティブフォーム - FormArray内のFormArrayはパスを取得できません

数日間、ユーザーが製品を作成できるようにすると同時に、親製品とは価格が異なる可能性のある製品のバリエーションを作成するフォームを作成しようとしています。例: 大きいウィジェットは 10 ポンド、小さいウィジェットは 5 ポンドです。毎回最終的には FormArray 内の FormArray になります。つまり、バリエーションの配列を持つ製品があり、それらのバリエーションには価格がありますが、属性の配列もあります。問題は、コントロールを追加しようとしたときに発生します。バリエーション価格を正常に表示できますが、バリエーションを追加するためのパスを取得できません.attributesコントロール、ngForのみが機能するというエラーが表示されます配列が [Object, Object] ではないか、コントロールが null です...覚えているよりも多くのエラーが発生しました! とにかく、何度も書き直された私のコードに、

最初に oninit のフォーム:

正常に機能するマスター プロダクトの属性を追加および削除するためのセクション:

バリエーションを追加する部分は機能しますが、メインの製品に追加された属性をバリエーションにコピーしようとしたコードがまだ残っていますが、うまくいったと思いますが、値にアクセスできませんでしたそれらを表示するために、variations.attributes がパスに対して機能しませんでした。

機能しないバリエーションに属性を追加する部分で、component.ts で問題が発生しています。

最後に、さらに混乱している私のhtmlです笑: