1. ホーム
  2. angular

[解決済み] Angularで確認ダイアログを作る簡単な方法?

2023-01-05 13:21:14

質問

アンギュラー2で確認ダイアログを作る、それほど複雑でない方法はありますか?アイデアは、アイテムをクリックして、その削除を確認するポップアップまたはモーダルを表示することです。 angular2-modal を試してみましたが、確認またはキャンセルしたときに何かを行うようにする方法がわかりません。 クリック機能は問題なく動作しますが、唯一の問題は、私はそれを使用する方法をよく知らないということです。私はまた、私が使用している違いと同じプラグインで別のモーダルを持っています。

this.modal.open(MyComponent);

そして、私は確認ボックスを表示するためだけに別のコンポーネントを作成したくないので、それが私が尋ねている理由です。

どのように解決するのですか?

方法1

確認のための1つの簡単な方法は、ネイティブブラウザの確認アラートを使用することです。 テンプレートはボタンまたはリンクを持つことができます。

<button type=button class="btn btn-primary"  (click)="clickMethod('name')">Delete me</button>

そして、コンポーネントメソッドは以下のようなものになります。

clickMethod(name: string) {
  if(confirm("Are you sure to delete "+name)) {
    console.log("Implement delete functionality here");
  }
}

方法2

シンプルな確認ダイアログを作るもう一つの方法は、angular bootstrap コンポーネントの ng-bootstrap または ngx-ブートストラップ . コンポーネントをインストールするだけで、モーダルコンポーネントを使用することができます。

  1. ng-bootstrapを使用したモーダルの例
  2. ngx-bootstrapを使用したモーダルの例 .

方法3

以下に、シンプルな確認ポップアップを実装する別の方法を示します。 angular2/material を使った簡単な確認用ポップアップの実装です。

app.module.ts

import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { ConfirmationDialog } from './confirm-dialog/confirmation-dialog';

@NgModule({
  imports: [
    ...
    FormsModule,
    ReactiveFormsModule
  ],
  declarations: [
    ...
    ConfirmationDialog
  ],
  providers: [ ... ],
  bootstrap: [ AppComponent ],
  entryComponents: [ConfirmationDialog]
})
export class AppModule { }

確認ダイアログ.ts

import { Component, Input } from '@angular/core';
import { MdDialog, MdDialogRef } from '@angular/material';

@Component({
  selector: 'confirm-dialog',
  templateUrl: '/app/confirm-dialog/confirmation-dialog.html',
})
export class ConfirmationDialog {
  constructor(public dialogRef: MdDialogRef<ConfirmationDialog>) {}

  public confirmMessage:string;
}

確認ダイアログ.html

<h1 md-dialog-title>Confirm</h1>
<div md-dialog-content>{{confirmMessage}}</div>
<div md-dialog-actions>
  <button md-button style="color: #fff;background-color: #153961;" (click)="dialogRef.close(true)">Confirm</button>
  <button md-button (click)="dialogRef.close(false)">Cancel</button>
</div>

app.component.html

<button (click)="openConfirmationDialog()">Delete me</button>

app.component.ts

import { MdDialog, MdDialogRef } from '@angular/material';
import { ConfirmationDialog } from './confirm-dialog/confirmation-dialog';

@Component({
  moduleId: module.id,
  templateUrl: '/app/app.component.html',
  styleUrls: ['/app/main.css']
})

export class AppComponent implements AfterViewInit {
  dialogRef: MdDialogRef<ConfirmationDialog>;

  constructor(public dialog: MdDialog) {}

  openConfirmationDialog() {
    this.dialogRef = this.dialog.open(ConfirmationDialog, {
      disableClose: false
    });
    this.dialogRef.componentInstance.confirmMessage = "Are you sure you want to delete?"

    this.dialogRef.afterClosed().subscribe(result => {
      if(result) {
        // do confirmation actions
      }
      this.dialogRef = null;
    });
  }
}

index.html =>に以下のスタイルシートを追加しました。

<link rel="stylesheet" href="node_modules/@angular/material/core/theming/prebuilt/indigo-pink.css">