Angular-クリックしても動的なngDropdownが展開されない

Cjolsen06

N個のフィルターを持つコンポーネントがあり、それらのフィルターごとにM個の値があります。これらの両方を動的に表示しようとしていますが、機能していないようです。

値をテストし、正しい構文を使用してデータを取得しているかどうかを確認し、コードがオブジェクトからデータを取得できるかどうかを確認しました。ただし、動的フィルターを使用すると、ドロップダウン<button>タグを超えて何も実行されていないように見えます。

ここで、アプリケーションのレプリカとして作成したStackBlitzプロジェクトを見ることができます。フィルタオブジェクトをgetFilters、HTMLから呼び出したときに返される形式でコンソールに出力しましたご覧のとおり、データを返していますが、ユーザーがドロップダウンをクリックしても、filterValuesは表示されません。

それぞれが表示されることを期待していfilterValuesますが、ドロップダウンボタンをクリックしても何も起こりません。動的機能を削除すると、ドロップダウンに値が表示されますが、動的にしたいと思います。どんな助けでも大歓迎です。

関連するテンプレートコード:

<div ngbDropdown class="d-inline-block" *ngFor="let filter of getFilters()">
    <button class="btn btn-outline-primary" id="{{filter[0]-dropdown}}" ngbDropdownToggle>{{filter[1].displayName}}</button>
    <div ngbDropdownMenu attr.aria-labelledby="{{filter[0]-dropdown}}">
        <button ngbDropdownItem *ngFor="let val of filter[1].filterValues">{{val}}</button>
    </div>
</div>

および関連するTypeScriptコード:

  getFilters() : [string, FilterItem][] {
    ...
    return Array.from(this.filters.entries()); 
  }
ダニエル

あなたが目撃している問題は、あなたのgetFilters()機能がべき等ではないために引き起こされます

Angularは、ユーザーの介入なしにメソッドを2回続けて呼び出すと、同じ値を返すことを期待しています。関数が配列を返す場合、同じ配列を2回返す必要があります。ただし、コードでは、毎回異なる配列を返します(同じ内容であっても、参照は異なります)。

このgetFilters()メソッドの実装を試してみると、問題が解決することがわかります(このように問題を解決することはお勧めしませんが、問題がどこにあるかを示しています)。

  private cached;
  getFilters() : [string, FilterItem][] {
    if (!this.cached)
      this.cached = Array.from(this.filters.entries())
    return this.cached; 
  }

私の推薦

このような値をキャッシュすることはお勧めしません。代わりに、アプリケーションの状態を変更するコードを、アプリケーションの状態を取得するコードとは別の部分に配置する必要があります。

  constructor () {
    this.filters = ...
    this.filterEntries = Array.from(this.filters.entries());
  }

そして、テンプレートで:

<div ngbDropdown class="d-inline-block" *ngFor="let filter of filterEntries">

ドキュメントから:

Angularのドキュメントでは、副作用について次のように説明しています。最も関連性の高いテキストを太字で示しています。

目に見える副作用はありません

テンプレート式は、ターゲットプロパティの値以外のアプリケーション状態を変更しないでください。

角度の用語では、べき等式は、従属値の1つが変更されるまで、常にまったく同じものを返します。

べき等式が文字列または数値を返す場合、連続して2回呼び出されると、同じ文字列または数値を返します。式が配列を含むオブジェクトを返す場合、連続して2回呼び出されると、同じオブジェクト参照が返されます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Angularで削除ボタンをクリックしてもページが更新されない

分類Dev

$ scope。$ applyを使用しても、Angular $ scopeがコールバック関数に適用されない

分類Dev

送信ボタンをクリックしても、Angular7フォーム検証でエラーが表示されない

分類Dev

onChangeが起動しないため、クリックしてもドロップダウンが展開されない

分類Dev

Angular5で動的に生成された要素で機能しないクリックイベント

分類Dev

ngForバッキングアレイが更新された後、Angular(クリック)が機能しない

分類Dev

Angularのready関数を使用しても、テキストボックスと画面をクリックした後、$ scope.valueが事前入力されたテキストボックスとしてのみ表示されるのはなぜですか

分類Dev

Angular-(クリック)Material / CDKDatatableで起動しない

分類Dev

Angularのngincludeディレクティブが予期されたリンクに対して機能しない

分類Dev

Angular-クリック後にデータが更新されない

分類Dev

Angular ui-bootstrap:背景クリックでモーダルが却下されない

分類Dev

Angular5ドロップダウン値が開始時に選択されたものとして表示されない

分類Dev

送信しないボタンをクリックするとエラーが表示されます(Angular Reactive Forms)

分類Dev

戻り値がtrueでない場合は、クリックされた要素を非表示にします(Angular 4)

分類Dev

Angular 2のクリック可能なイベントは、クリックしなくても自動的に発生します

分類Dev

クリック時にクラスの色を変更しても機能しないAngular2

分類Dev

Angularアプリで開いているメニュー内をクリックしたときにmd-menuが閉じないようにする

分類Dev

Angular 2-親要素をクリックしたときに子がクリックされないようにしますか?

分類Dev

Angular.jsngクリックが機能しない

分類Dev

Angular 2 クリック イベントが機能しない

分類Dev

Angular HTTP が最初のクリックで機能しない

分類Dev

関係のないボタンをクリックすると、動的スタイルがAngular6に再ロードされるのはなぜですか

分類Dev

AngularのPUTリクエストがXHRヘッダー内で更新されたデータを送信しない

分類Dev

スマートフォンのmaterial.angularでMousemoveを実行しても、マットボタンのクリックが機能しない

分類Dev

Angular AsyncHTTPリクエストが非同期で送信されない

分類Dev

[チェックボックス] DOMプロパティにfalseを設定しても、Angularのチェックボックスがオフにならない

分類Dev

ChromeでクリックしてもYouTube動画が自動再生されない

分類Dev

Angular7ドロップゾーン:クリックイベントがトリガーされない

分類Dev

Angular9クエリパラメータが指定されていない場合はリダイレクト

Related 関連記事

  1. 1

    Angularで削除ボタンをクリックしてもページが更新されない

  2. 2

    $ scope。$ applyを使用しても、Angular $ scopeがコールバック関数に適用されない

  3. 3

    送信ボタンをクリックしても、Angular7フォーム検証でエラーが表示されない

  4. 4

    onChangeが起動しないため、クリックしてもドロップダウンが展開されない

  5. 5

    Angular5で動的に生成された要素で機能しないクリックイベント

  6. 6

    ngForバッキングアレイが更新された後、Angular(クリック)が機能しない

  7. 7

    Angularのready関数を使用しても、テキストボックスと画面をクリックした後、$ scope.valueが事前入力されたテキストボックスとしてのみ表示されるのはなぜですか

  8. 8

    Angular-(クリック)Material / CDKDatatableで起動しない

  9. 9

    Angularのngincludeディレクティブが予期されたリンクに対して機能しない

  10. 10

    Angular-クリック後にデータが更新されない

  11. 11

    Angular ui-bootstrap:背景クリックでモーダルが却下されない

  12. 12

    Angular5ドロップダウン値が開始時に選択されたものとして表示されない

  13. 13

    送信しないボタンをクリックするとエラーが表示されます(Angular Reactive Forms)

  14. 14

    戻り値がtrueでない場合は、クリックされた要素を非表示にします(Angular 4)

  15. 15

    Angular 2のクリック可能なイベントは、クリックしなくても自動的に発生します

  16. 16

    クリック時にクラスの色を変更しても機能しないAngular2

  17. 17

    Angularアプリで開いているメニュー内をクリックしたときにmd-menuが閉じないようにする

  18. 18

    Angular 2-親要素をクリックしたときに子がクリックされないようにしますか?

  19. 19

    Angular.jsngクリックが機能しない

  20. 20

    Angular 2 クリック イベントが機能しない

  21. 21

    Angular HTTP が最初のクリックで機能しない

  22. 22

    関係のないボタンをクリックすると、動的スタイルがAngular6に再ロードされるのはなぜですか

  23. 23

    AngularのPUTリクエストがXHRヘッダー内で更新されたデータを送信しない

  24. 24

    スマートフォンのmaterial.angularでMousemoveを実行しても、マットボタンのクリックが機能しない

  25. 25

    Angular AsyncHTTPリクエストが非同期で送信されない

  26. 26

    [チェックボックス] DOMプロパティにfalseを設定しても、Angularのチェックボックスがオフにならない

  27. 27

    ChromeでクリックしてもYouTube動画が自動再生されない

  28. 28

    Angular7ドロップゾーン:クリックイベントがトリガーされない

  29. 29

    Angular9クエリパラメータが指定されていない場合はリダイレクト

ホットタグ

アーカイブ