角度に基づくツリー型セカンダリテーブルを実現する

角度に基づくツリー型セカンダリテーブルを実現する

まず効果を見てみましょう:

コード:

1.html

  <div class="userContent_content">
    <div>
      <テーブル>
        <tr>
          <td>ノード名</td>
          <td>ノード管理 IP</td>
          <td>ノードログイン名</td> 
          <td>ノードログインパスワード</td> 
        </tr>
        // ng-container を空のタグとして使用して、レビュー要素に見つからない for または if イベントを配置できるようにします <ng-container *ngFor="let item of currentTotalList,let i = index">
          <tr>
            <td style="color: #04AEB4;cursor: ポインター;" class="img">
              <div>
                <div>{{item.name} </div>
                <div>
        // 以下は矢印の展開と折りたたみを切り替える矢印の画像です。現在のクリック インデックスがリスト インデックスと等しいかどうかを判断し、等しい場合は展開され、等しくない場合は折りたたまれます <img (click)="clickShowChildList(i,item.name)"
                    [attr.src]="i == currentClickOpenIndex?'../../assets/resource/img/bottom.png':'../../assets/resource/img/right.png'">
                </div>
              </div>
            </td>
            <td>{{item.ip} </td>
            <td>{{item.ユーザー名}}</td>
            <td>{{item.パスワード}}</td>
          </tr>
        // ng-container タグを再度使用して、テーブルの子項目をネストします <ng-container *ngFor="let childItem of item.nodeList, let j = index">
        // for ループと if 判定は同じタグ内に共存できないため、隠しイベント if は tr タグ内に配置されます。現在クリックされているインデックスがリストのインデックスと一致しているかどうかを判定し、等しい場合は折りたたまれ、等しくない場合は表示されます。
 
            <tr *ngIf="i == 現在のクリックオープンインデックス">
              <td style="color: #04AEB4;cursor: ポインター;" class="img">
                <div>
                  <div>
                    {{childItem.masterIp}} </div>
                </div>
              </td>
              <td>{{childItem.ip}}</td>
              <td>{{childItem.ユーザー名}}</td>
              <td>{{childItem.password}}</td>
            </tr>
          </ng-コンテナ>
        </ng-コンテナ>
 
      </テーブル>
    </div>
    
  </div>

2. 少ない

      .userContent_content{
        幅: 100%;
        高さ: calc(~"100% - 60px");
        オーバーフロー:自動;
        >div:n番目の子(1){
          >表{
            幅: 100%;
            tr{
              td{
                幅: 25%;
                テキスト配置: 中央;
                フォントサイズ: 14px;
                色: #fff;
                パディング: 16px 0px;
                ボックスの影: 0 1px #333;
              }
            }
            .img {
              >div {
                幅: 100%;
                ディスプレイ: フレックス;
                位置: 相対的;
  
                >div:n番目の子(1) {
                  幅: 85%;
                  空白: ラップなし;
                  テキストオーバーフロー: 省略記号;
                  -o-テキストオーバーフロー:省略記号;
                  オーバーフロー: 非表示;
                  マージン: 0 自動;
  
                }
              }
  
              画像 {
                高さ: 10px !重要;
                幅: 10px !重要;
                左マージン: 0 !重要;
                位置: 絶対;
                右: 0;
                上: 3px;
              }
            }
          }
        }
  
        >div:n番目の子(2){
          高さ: 80px;
          幅: 90%;
          ディスプレイ: フレックス;
          アイテムの位置を中央揃えにします。
          マージン: 0 自動;
          コンテンツの端揃え: flex-end;
          #ページ{
            表示: テーブル;
          }
        }
      }

3.js

(1) currentTotalListテーブルデータの形式は次のようになります(シミュレーションデータを自分で記述することもできます)。

(2)現在のクリックインデックス変数currentClickOpenIndexを-1に初期化する

(3)は展開と折りたたみの矢印のクリックイベントです。

  クリック表示子リスト = (i, 項目) =>{
    console.log(i,this.currentClickOpenIndex)
    if(this.currentClickOpenIndex==i){
      this.currentClickOpenIndex = -1
    }それ以外{
      this.currentClickOpenIndex = i
    }
  }

そして完成です...

Angular をベースにしたツリー型セカンダリ テーブルの実装に関するこの記事はこれで終わりです。Angular のツリー型セカンダリ テーブルに関する関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • AngularJS は、テーブル テーブル td セルをクリックして入力ボックス/編集可能な状態を変更する例を実装します。
  • AngularJS ファジークエリ機能実装コード (フィルタコンテンツ ドロップダウンメニュー ソート フィルタ センシティブ文字 検証判定 テーブル情報の追加)
  • AngularJS での基本的なテーブル操作の例
  • Angular テーブル アーティファクト ui-grid アプリケーションの詳細な説明
  • Angularはフォームに入力されたデータをテーブルにレンダリングします
  • AngularJS はテーブルの追加、削除、変更、クエリを実装します (フロントエンドのみ)

<<:  PostgreSQL データベースにおける varchar、char、text の比較に関する簡単な説明

>>:  Dockerイメージの圧縮と最適化操作

推薦する

MySQL Order By 複数フィールドのソートルールのコード例

事前に言っておく気まぐれですが、MySQL の order by sorting にどのようなルール...

MySQLのREDOログとUNDOログの詳細な説明

MySQL ログ システムで最も重要なログは、REDO ログとアーカイブ ログです。後者は MySQ...

Vueは完全な選択機能を実装しています

この記事の例では、完全な選択機能を実装するためのVueの具体的なコードを参考までに共有しています。具...

Web面接におけるJS事前解析と変数プロモーションの違い

目次事前分析とは何ですか?変数と関数の準備の違いvar 変数の繰り返し宣言変数と関数の昇格の優先順位...

Vueのリストレンダリングの詳細な説明

目次1. v-for: 配列の内容を走査する(よく使われる) 2. v-for: オブジェクトのプロ...

DockerとFastDFSのインストールコマンドと使い方の詳しい説明

Dockerの機能1) すぐに始められるユーザーがプログラムを「Docker 化」するには、わずか数...

Docker で最初のアプリケーションをデプロイする方法

前回の記事では、Docker Desktop をインストールし、Kubernetes を有効にしまし...

ブログデザイン ウェブデザイン デビュー

私がデザインした最初の Web ページは次のとおりです。 私はこの業界に7年間在籍し、プログラミング...

UDP 接続オブジェクトの原理分析と使用例

以前、UDP を使い始めるために簡単な UDP サーバーとクライアントの例を作成しましたが、実際に使...

Mysql の遅いクエリ操作の概要

MySQL の遅いクエリの説明MySQL スロー クエリ ログは、MySQL が提供するログ レコー...

Linux コマンドラインのクイックヒント: ファイルの検索方法

私たちのコンピューターには、ディレクトリ、写真、ソース コードなどのファイルが保存されています。たく...

Vue でフルスクリーンを実装し、フルスクリーン終了を監視する

目次序文:実装手順:完全なソースコード:詳細情報:序文: vueでは、デフォルトページを実装し、di...

Nginxドメイン名転送の実装

Nginx の紹介Nginx (「エンジン x」) は、ロシアのプログラマー Igor Sysoev...

JavaScript の navigator.userAgent がブラウザ情報を取得するケースの説明

ブラウザはおそらく私たちにとって最も馴染みのあるツールです。 Firefox、Opera、Safar...

Vue フロントエンドの Excel ファイルのエクスポートの詳細な実装計画

目次1. 技術の選択2. 技術的な実装vue-json-excelプラグインを使用して実装1. vu...