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

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

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

コード:

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イメージの圧縮と最適化操作

推薦する

Linux システムによって報告される xfs_vm_releasepage 警告問題に対処する方法

問題の説明最近、いくつかのマシンで、一日のさまざまな時間に次の警告メッセージが表示されました。 3月...

ロンボク実装 JSR-269

序文導入Lombok は、Google Guava と同様に便利なツールであり、強くお勧めします。す...

CSS テキスト配置実装コード

フォームを作成するときに、名前、携帯電話番号、出生地などの 2 つのフィールドを揃える状況に遭遇する...

Nginx がフロントエンド リソースへのクロスドメイン アクセスの問題をどのように解決するかの詳細な説明

フロントエンドのクロスドメイン問題に2日間近く悩まされましたが、ようやくngnxを使って解決したので...

HTML ハイパーリンク内の中国語文字化けの分析と解決

Vm 内のハイパーリンク URL は、Get 要求のパラメータとして中国語と連結する必要があります。...

Dockerコンテナ内で2つのプロセスを開始するときのDockerfile実装コード

最近、cronスケジュールタスク用のdockerを作りたいと思っており、Dockerfileで次のよ...

Linux のような環境で jdk1.8 をインストールし、環境変数を設定する方法の詳細な説明

設定は非常にシンプルですが、毎回確認しないといけないので、記録だけ残しておきます。 1. インストー...

Tomcat でよく使われるフィルターの詳細な説明

目次1. クロスドメインフィルタ CorsFilter 1.1 設定例1.2 パラメータの説明2. ...

MySQLでSELECT文が実行される仕組み

目次1. マクロの観点からMySQLを分析する2. SQL ステートメントを実行するには、どの程度の...

Alibaba Cloud Server への Web プロジェクトのデプロイについて (5 つの手順)

1.まずAlibaba Cloudのウェブサイトにログインしてアカウントを登録し、サーバータイプを...

Vue3.xはコンポーネント通信にmitt.jsを使用します

目次クイックスタート使い方基本原則Vue2.x はコンポーネント通信に EventBus を使用しま...

初心者向けMySQLインデックス

序文MySQL インデックスで最も重要なデータ構造は B+ ツリーなので、まずは B+ ツリーの原理...

MySQLでconcat関数を使用する方法

以下のように表示されます。 //managefee_managefee テーブルの年と月を照会し、c...

Vue で Axios カプセル化を使用するための完全なチュートリアル

序文現在、プロジェクトでは、Axios ライブラリが HTTP インターフェース リクエストによく使...

CSSを使用してファイルアップロードパターンを描画する

以下に示すように、あなたならどのようにそれを達成しますか: 通常、フォントアイコンを使用して中央にプ...