Angular Toast (トースト) コンポーネントの概要
Ignite UI for Angular Toast コンポーネントは、自動非表示でユーザーが閉じられない非対話型の情報および報告メッセージを表示できます。通知はページの上側、中央、または下側に表示できます。
Angular Toast の例
import { NgModule } from "@angular/core" ;
import { FormsModule } from "@angular/forms" ;
import { BrowserModule } from "@angular/platform-browser" ;
import { BrowserAnimationsModule } from "@angular/platform-browser/animations" ;
import { AppComponent } from "./app.component" ;
import {
IgxButtonModule,
IgxRippleModule,
IgxToastModule
} from "igniteui-angular" ;
import { ToastSample2Component } from "./toast-sample-2/toast-sample-2.component" ;
@NgModule ({
bootstrap : [AppComponent],
declarations : [
AppComponent,
ToastSample2Component
],
imports : [
BrowserModule,
BrowserAnimationsModule,
FormsModule,
IgxButtonModule,
IgxRippleModule,
IgxToastModule
],
providers : [],
entryComponents : [],
schemas : []
})
export class AppModule {}
ts コピー import { Component } from '@angular/core' ;
@Component ({
selector : 'app-toast-sample-2' ,
styleUrls : ['./toast-sample-2.component.scss' ],
templateUrl : './toast-sample-2.component.html'
})
export class ToastSample2Component { }
ts コピー <div >
<button igxButton ="raised" (click )="toast.open()" > Show notification</button >
<igx-toast #toast > Notification displayed</igx-toast >
</div >
html コピー button {
margin : 1.2% 0 ;
}
scss コピー
このサンプルが気に入りましたか? 完全な Ignite UI for Angularツールキットにアクセスして、すばやく独自のアプリの作成を開始します。無料でダウンロードできます。
Ignite UI for Angular Toast を使用した作業の開始
Ignite UI for Angular Toast コンポーネントを使用した作業を開始するには、Ignite UI for Angular をインストールする必要があります。既存の Angular アプリケーションで、以下のコマンドを入力します。
ng add igniteui-angular
cmd
Ignite UI for Angular については、「はじめに 」トピックをご覧ください。
次に、app.module.ts ファイルに IgxToastModule
をインポートします。
...
import { IgxToastModule } from 'igniteui-angular' ;
@NgModule ({
...
imports : [..., IgxToastModule],
...
})
export class AppModule {}
typescript
あるいは、16.0.0
以降、IgxToastComponent
をスタンドアロンの依存関係としてインポートできます。
import { IgxToastComponent, IgxButtonDirective } from 'igniteui-angular' ;
@Component ({
selector : 'app-home' ,
template : `
<button igxButton="contained" (click)="toast.open()">Show notification</button>
<igx-toast #toast>Notification displayed</igx-toast>
` ,
styleUrls : ['home.component.scss' ],
standalone : true ,
imports : [IgxToastComponent, IgxButtonDirective]
})
export class HomeComponent {
public time: Date ;
}
typescript
Ignite UI for Angular Toast モジュールまたはコンポーネントをインポートしたので、igx-toast
コンポーネントの使用を開始できます。
Angular Toast の使用
Toast の表示
Toast コンポーネントを表示するには、ボタン クリックで open()
メソッドを呼び出します。Toast コンテンツを要素内に渡すことができます。
<button igxButton ="contained" (click )="toast.open()" > Show notification</button >
<igx-toast #toast > Notification displayed</igx-toast >
html
Toast コンテンツを設定する別の方法は、メッセージをパラメーターとして open()
メソッドに直接渡すことです。
<button igxButton ="contained" (click )="toast.open('Notification displayed')" > Show notification</button >
<igx-toast #toast > </igx-toast >
html
open()
メソッドを AppComponent ファイルで使用して、メッセージの値を管理することもできます。
@ViewChild ('toast' , { read : IgxToastComponent }) public toast: IgxToastComponent;
public message: any ;
public ngOnInit ( ) {
this .message = 'Display message' ;
}
public showMessage ( ) {
this .toast.open(this .message);
}
typescript
例
非表示/自動的に隠す
開いた後は、displayTime
に指定した時間期間後に非表示になります。デフォルト値は 4000 ミリ秒です。この動作はデフォルトで有効ですが、autoHide
を false に設定して変更できます。このように、Toast は非表示になりません。Toast の close()
メソッドを使用して、コンポーネントを閉じることができます。
<button igxButton ="contained" (click )="toast.open()" > Show Toast</button >
<button igxButton ="contained" (click )="toast.close()" > Hide Toast</button >
<igx-toast #toast [autoHide ]="false" > Notification displayed</igx-toast >
html
サンプルが正しく構成されると、[SHOW] ボタンをクリックしたときに Toast が表示されます。自動的に隠す機能が無効で、[HIDE] ボタンのクリックで Toast が非表示になります。
他の 2 つのコンポーネントでは、open()
メソッドを介してさまざまなメッセージを渡し、コンテンツ プロジェクションを使用する方法を実際に見ることができます。
import { NgModule } from "@angular/core" ;
import { FormsModule } from "@angular/forms" ;
import { BrowserModule } from "@angular/platform-browser" ;
import { BrowserAnimationsModule } from "@angular/platform-browser/animations" ;
import { AppComponent } from "./app.component" ;
import {
IgxButtonModule,
IgxRippleModule,
IgxIconModule,
IgxToastModule
} from "igniteui-angular" ;
import { ToastSample3Component } from "./toast-sample-3/toast-sample-3.component" ;
@NgModule ({
bootstrap : [AppComponent],
declarations : [
AppComponent,
ToastSample3Component
],
imports : [
BrowserModule,
BrowserAnimationsModule,
FormsModule,
IgxButtonModule,
IgxRippleModule,
IgxToastModule,
IgxIconModule
],
providers : [],
entryComponents : [],
schemas : []
})
export class AppModule {}
ts コピー import { Component } from '@angular/core' ;
@Component ({
selector : 'app-toast-sample-3' ,
styleUrls : ['./toast-sample-3.component.scss' ],
templateUrl : './toast-sample-3.component.html'
})
export class ToastSample3Component { }
ts コピー <div class ='columnWrapper' >
<span >
<h6 > Toast that uses content projection</h6 >
<button igxButton ="raised" (click )="toast.open()" > Show Toast</button >
<button igxButton ="raised" (click )="toast.close()" > Hide Toast</button >
<igx-toast #toast [autoHide ]="false" > Notification displayed</igx-toast >
</span >
<span >
<h6 > Toast which dynamically changes the message text</h6 >
<button igxButton ="outlined" igxButtonColor ="blue" (click )="toast1.open('Hi! This is info message.')" > Info Message</button >
<button igxButton ="outlined" igxButtonColor ="green" (click )="toast1.open('Hi! This is success message.')" > Success Message</button >
<button igxButton ="outlined" igxButtonColor ="orange" (click )="toast1.open('Hi! This is warning message.')" > Warning Message</button >
<button igxButton ="outlined" igxButtonColor ="red" (click )="toast1.open('Hi! This is error message.')" > Error Message</button >
<igx-toast #toast1 [autoHide ]="true" > </igx-toast >
</span >
<span >
<h6 > Toast that uses content projection and dynamically changes the message text</h6 >
<button igxButton ="raised" (click )="toast2.open('You have one new message.')" > Show Toast</button >
<button igxButton ="raised" (click )="toast2.open('Your massage has been successfully sent.')" > Show Toast with another message</button >
<igx-toast #toast2 [autoHide ]="true" >
<igx-icon > mail</igx-icon >
</igx-toast >
</span >
</div >
html コピー .columnWrapper {
display : flex;
flex-flow : row;
padding-top : 30px ;
}
.columnWrapper span {
min-width : 250px ;
flex : 1 0 0px ;
justify-content : center;
align-items : center;
align-content : center;
text-align : center;
}
button {
margin : 15px 10px 10px 0 ;
}
scss コピー
表示期間
displayTime
でミリ秒間隔に設定し、Toast コンポーネントが表示される期間を構成します。
<button igxButton ="contained" (click )="toast.open()" > Show notification</button >
<igx-toast #toast displayTime ="1000" > Notification displayed</igx-toast >
html
サンプルが正しく構成された場合、Toast が自動ですばやく非表示になります。
配置
positionSettings
を使用すると、Toast の表示位置を構成します。デフォルトで、ページの下に表示されます。以下のサンプルで、通知が上位置に表示されます。
<div >
<button igxButton ="contained" (click )="open(toast)" > Show notification on top</button >
<igx-toast #toast > Notification displayed</igx-toast >
</div >
html
import { VerticalAlignment } from 'igniteui-angular' ;
...
public open (toast ) {
toast.positionSettings.verticalDirection = VerticalAlignment.Top;
toast.open();
}
...
typescript
import { NgModule } from "@angular/core" ;
import { FormsModule } from "@angular/forms" ;
import { BrowserModule } from "@angular/platform-browser" ;
import { BrowserAnimationsModule } from "@angular/platform-browser/animations" ;
import { AppComponent } from "./app.component" ;
import {
IgxButtonModule,
IgxRippleModule,
IgxToastModule
} from "igniteui-angular" ;
import { ToastSample5Component } from "./toast-sample-5/toast-sample-5.component" ;
@NgModule ({
bootstrap : [AppComponent],
declarations : [
AppComponent,
ToastSample5Component
],
imports : [
BrowserModule,
BrowserAnimationsModule,
FormsModule,
IgxButtonModule,
IgxRippleModule,
IgxToastModule
],
providers : [],
entryComponents : [],
schemas : []
})
export class AppModule {}
ts コピー import { Component } from '@angular/core' ;
import { VerticalAlignment } from 'igniteui-angular' ;
@Component ({
selector : 'app-toast-sample-5' ,
styleUrls : ['./toast-sample-5.component.scss' ],
templateUrl : './toast-sample-5.component.html'
})
export class ToastSample5Component {
public open (toast ) {
toast.positionSettings.verticalDirection = VerticalAlignment.Top;
toast.open();
}
}
ts コピー <div >
<button igxButton ="raised" (click )="open(toast)" > Show notification on top</button >
<igx-toast #toast > Notification displayed</igx-toast >
</div >
html コピー
スタイル設定
Toast のスタイル設定を始めるには、すべてのテーマ関数とコンポーネント ミックスインが存在する index ファイルをインポートする必要があります。
@use "igniteui-angular/theming" as *;
scss
最も簡単な方法は、toast-theme
を拡張する新しいテーマを作成し、$background
、$text-color
と $border-radius
パラメーターを受け取る方法です。
$custom-toast-theme : toast-theme(
$background : #dedede ,
$text-color : #151515 ,
$border-radius : 12px
);
scss
上記のようにカラーの値をハードコーディングする代わりに、palette
および color
関数を使用してカラーに関してより高い柔軟性を実現することができます。使い方の詳細についてはパレット
のトピックをご覧ください。
最後に Toast のカスタム テーマを設定します。
@include css-vars($custom-toast-theme );
scss
デモ
import { NgModule } from "@angular/core" ;
import { FormsModule } from "@angular/forms" ;
import { BrowserModule } from "@angular/platform-browser" ;
import { BrowserAnimationsModule } from "@angular/platform-browser/animations" ;
import { AppComponent } from "./app.component" ;
import {
IgxButtonModule,
IgxRippleModule,
IgxToastModule
} from "igniteui-angular" ;
import { ToastStyleComponent } from "./toast-style/toast-style.component" ;
@NgModule ({
bootstrap : [AppComponent],
declarations : [
AppComponent,
ToastStyleComponent
],
imports : [
BrowserModule,
BrowserAnimationsModule,
FormsModule,
IgxButtonModule,
IgxRippleModule,
IgxToastModule
],
providers : [],
entryComponents : [],
schemas : []
})
export class AppModule {}
ts コピー import { Component } from '@angular/core' ;
import { IgxToastComponent, VerticalAlignment } from 'igniteui-angular' ;
@Component ({
selector : 'app-toast-style' ,
styleUrls : ['./toast-style.component.scss' ],
templateUrl : './toast-style.component.html'
})
export class ToastStyleComponent {
public toast: IgxToastComponent;
public position = VerticalAlignment;
openToast (toast: IgxToastComponent, pos: VerticalAlignment ) {
toast.positionSettings.verticalDirection = pos;
toast.open();
}
}
ts コピー <div class ="sample-wrapper" >
<section class ="sample-content" >
<article class ="sample-column" >
<h5 class ="title" > Bottom Position</h5 >
<div class ="preview bottom" > </div >
<div class ="btn-group" >
<button igxButton ="raised" igxRipple ="white" (click )="openToast(toast, position.Bottom)" [disabled ]="toast.isVisible" > Show Toast</button >
<button igxButton ="raised" igxRipple ="white" (click )="toast.close()" [disabled ]="!toast.isVisible" > Hide Toast</button >
</div >
</article >
<article class ="sample-column" >
<h5 class ="title" > Middle Position</h5 >
<div class ="preview middle" > </div >
<div class ="btn-group" >
<button igxButton ="raised" igxRipple ="white" (click )="openToast(toast, position.Middle)" [disabled ]="toast.isVisible" > Show Toast</button >
<button igxButton ="raised" igxRipple ="white" (click )="toast.close()" [disabled ]="!toast.isVisible" > Hide Toast</button >
</div >
</article >
<article class ="sample-column" >
<h5 class ="title" > Top Position</h5 >
<div class ="preview top" > </div >
<div class ="btn-group" >
<button igxButton ="raised" igxRipple ="white" (click )="openToast(toast, position.Top)" [disabled ]="toast.isVisible" > Show Toast</button >
<button igxButton ="raised" igxRipple ="white" (click )="toast.close()" [disabled ]="!toast.isVisible" > Hide Toast</button >
</div >
</article >
</section >
<igx-toast #toast [autoHide ]="false" > This message will self-destruct in 4 seconds.</igx-toast >
</div >
html コピー @use '../../variables' as *;
.sample-content {
margin : 10% auto 0 ;
}
.sample-column {
min-width : 270px ;
}
.btn-group {
display : flex;
width : 250px ;
margin-top : 16px ;
justify-content : space-between;
}
$custom-toast-theme : toast-theme(
$background : #dedede ,
$text-color : #151515 ,
$border-radius : 12px
);
:host {
@include css-vars($custom-toast-theme );
}
scss コピー
API リファレンス
その他のリソース
コミュニティに参加して新しいアイデアをご提案ください。